home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: Alpha / Whiteline Alpha.iso / progtool / gfabasic / wt_gfa / wt_gfa.hlp < prev    next >
Encoding:
Text File  |  1994-09-22  |  102.6 KB  |  2,743 lines

  1.  
  2.  
  3.  
  4.                                Handbuch
  5.  
  6.                  Weller-TOOLS für GFA-BASIC V3.0/V2.0
  7.  
  8.                             V3.02 01/1990
  9.  
  10.                              Weller-TOOLS
  11.                        Dipl.-Ing. Clemens Weller
  12.                       Adalbert-Stifter-Straße 27
  13.                        7141 Steinheim a.d. Murr
  14.                        Telefon (07144) 20 80 27
  15.                             BTX 07144208027
  16.  
  17.  
  18.  
  19.  
  20.      Die Weller-TOOLS für GFA-BASIC stellen eine  Entwicklungsum-
  21. gebung für GFA-BASIC-Programme dar.  Damit soll den vielen Hobby-
  22. und  Profi-Programmierern ein Werkzeug in die Hand gelegt werden, 
  23. das sie bei der Arbeit unterstützt, vor allem bei der Optimierung 
  24. und Fehlersuche.
  25.  
  26.      Letztendlich  profitieren alle  Atari-Anwender von  besseren 
  27. Programmen  -  mit mehr  Erfolg und Freude bei der Arbeit mit dem 
  28. Atari ST.
  29.  
  30.  
  31.  
  32.  
  33. əINHALTSVERZEICHNIS
  34.  
  35.  
  36. 1. EINLEITUNG...................................................5
  37.  
  38. 1.1 GESCHICHTEN DES ALLTAGS.....................................5
  39.  
  40. 1.2 COMPUTER-UNTERSTÜTZTES PROGRAMMIEREN........................7
  41.  
  42. 1.3 WERKZEUGE FÜR GFA-BASIC.....................................8
  43. 1.3.1 Programm-Schalen,.........................................8
  44. 1.3.2 Wechselbeziehungs-Analysatoren:...........................8
  45. 1.3.3 Outliner..................................................8
  46. 1.3.4 Editoren..................................................8
  47. 1.3.5 Konverter.................................................9
  48. 1.3.6 Andere....................................................9
  49.  
  50. 1.4 DIE WELLER-TOOLS FÜR GFA-BASIC ALS ENTWICKLUNGSUMGEBUNG....10
  51. 1.4.1 Leistungsumfang..........................................10
  52. 1.4.2 Cross-Reference-Analyser.................................10
  53. 1.4.3 Flexible Programmschale..................................11
  54. 1.4.4 Outliner.................................................11
  55. 1.4.5 Universelles Ausgabekonzept..............................11
  56. 1.4.6 Leicht zu bedienen.......................................11
  57. 1.4.7 Allgemeine Merkmale......................................11
  58. 1.4.8 Public-Domain- und Profi-Version.........................12
  59. 1.4.9 Pressespiegel............................................12
  60.  
  61. 1.5 TIPS ZUM PROGRAMMIEREN.....................................13
  62.  
  63.  
  64. 2. EINFÜHRUNG..................................................14
  65.  
  66. 2.1 INSTALLATION...............................................14
  67.  
  68. 2.2 DER BILDSCHIRMAUFBAU.......................................15
  69.  
  70.  
  71. 3. REFERENZ-TEIL: BESCHREIBUNG DER FUNKTIONEN..................16
  72.  
  73. 3.1 WT_GFA.....................................................16
  74.  
  75. 3.2 DATEI......................................................17
  76. 3.2.1 LST-Datei laden..........................................17
  77. 3.2.2 Ausgabegeräte............................................18
  78. 3.2.3 Bildschirmparameter......................................18
  79. 3.2.4 Druckerparameter.........................................19
  80. 3.2.5 Druckertest..............................................19
  81. 3.2.6 Ende.....................................................19
  82.  
  83. 3.3 SHELL......................................................20
  84. 3.3.1 Zweck Programmschale.....................................20
  85. 3.3.2 Konfiguration der festen GFA-Programmschale..............20
  86. 3.3.3 Die flexible Programmschale..............................22
  87. 3.2.4 Desktop-Funktionen.......................................23
  88. 3.3.5 Aspekte des Speicherplatzes..............................23
  89.  
  90. 3.4 X-REF......................................................24
  91. 3.4.1 Zweck von Cross-Reference-Listen.........................24
  92. 3.4.2 X-REF erzeugen...........................................25
  93. 3.4.3 X-REF ausgeben...........................................26
  94. 3.4.4 Beispiel: Cross-Reference-Liste..........................27
  95. 3.4.5 Unzulänglichkeiten.......................................32
  96. 3.4.6 Speicherbedarf der X-REF-Funktion........................32
  97.  
  98. 3.5 OUTLINE....................................................33
  99. 3.5.1 Funktionsweise...........................................33
  100. 3.5.2 Start....................................................36
  101. 3.5.3 Schlüsselwörter hinzufügen...............................36
  102. 3.5.4 Schlüsselwörter entfernen................................36
  103. 3.5.5 Schlüsselwörter laden....................................36
  104. 3.5.6 Schlüsselwörter speichern................................36
  105. 3.5.7 Kommentare berücksichtigen...............................36
  106. 3.5.8 Zeichenketten berücksichtigen............................36
  107. 3.5.9 Proceduren klappen.......................................37
  108. 3.5.10 Proceduren auflisten....................................38
  109. 3.5.11 Module auflisten........................................38
  110. 3.5.12 1-zeilige Funktionen auflisten..........................38
  111. 3.5.13 Mehrzeilige Funktionen auflisten........................38
  112. 3.5.14 Lokale Variablen auflisten..............................38
  113.  
  114. 3.6 DIVERSES...................................................39
  115. 3.6.1 Listing-Druck-Funktion...................................39
  116. 3.6.2 Listing numerieren.......................................40
  117. 3.6.3 Zeilenoffset.............................................40
  118. 3.6.4 Kommentare löschen.......................................40
  119. 3.6.5 Statistik................................................41
  120. 3.6.6 Datamake.................................................42
  121. 3.6.7 Speicher freigeben.......................................43
  122.  
  123. 3.7 HILFE......................................................44
  124. 3.7.1 Extrahilfe...............................................44
  125. 3.7.2 Inhaltsverzeichnis.......................................44
  126. 3.7.3 Kapitel zeigen...........................................44
  127.  
  128.  
  129. 4. DAS VERTRIEBSKONZEPT DER WELLER-TOOLS FÜR GFA-BASIC.........45
  130.  
  131.  
  132. 5. ANHANG......................................................46
  133.  
  134. 5.1 LIEFERUMFANG...............................................46
  135.  
  136. 5.2 DATEIFORMATE...............................................48
  137. 5.2.1 WT_GFA.INF...............................................48
  138. 5.2.2 WT_GFA.PIC...............................................48
  139. 5.2.3 WT_GFA.HLP...............................................48
  140. 5.2.4 WT_GFA.FSL...............................................49
  141.  
  142. 5.3 Druckertreiber patchen.....................................50
  143.  
  144. 5.4 ÄNDERUNGEN BEI UPDATES.....................................51
  145. 5.4.1 Änderungen V1.2 -> V1.42.................................51
  146. 5.4.2 Änderungen V1.42-> V3.00.................................51
  147. 5.4.3 (Noch) nicht umgesetzte Erweiterungsvorschläge...........52
  148. 5.4.4 Fehler, die noch nicht behoben sind......................53
  149.  
  150. 5.5 SCHMANKERL: PROGRAMMIERWETTBEWERB..........................54
  151.  
  152. 5.6 UNIX-WERKZEUGE FÜR DIE PROGRAMMENTWICKLUNG.................55
  153. 5.6.1 Programm-Checker 'lint'..................................55
  154. 5.6.2 C-Präprozessor 'pp'......................................55
  155.  
  156. 5.7 GLOBALES PROGRAMM-LAYOUT...................................56
  157.  
  158. 5.8 ÜBERSICHT ÜBER ZUSATZPROGRAMME FÜR GFA-BASIC...............57
  159. 5.8.1 Analysierer..............................................57
  160. 5.8.2 Masken- und Menü-Generatoren.............................58
  161. 5.8.3 Shells...................................................59
  162. 5.8.4 Konverter................................................59
  163. 5.8.5 Diverses.................................................60
  164.  
  165. 5.9 DIES UND DAS...............................................61
  166. 5.9.1 Dank an..................................................61
  167. 5.9.2 Ideen aus anderen Programmen.............................61
  168. 5.9.3 Programmhinweise.........................................61
  169. 5.9.4 Copyright, Public Domain.................................61
  170.  
  171. 5.10 ANWENDER-REPORT...........................................62
  172.  
  173.  
  174.  
  175.  
  176. ə1. EINLEITUNG
  177.  
  178.  
  179.  
  180. ə1.1 GESCHICHTEN DES ALLTAGS
  181.  
  182.      H.A. ist professioneller Programmierer. Neben vielen anderen 
  183. Sprachen verwendet er auch GFA-BASIC.  Ab und zu schreibt er auch 
  184. Public-Domain-Programme,  die  ihm  zwar kein  Geld,  aber  einen 
  185. ziemlich  großen  Bekanntheitsgrad  verschaffen.   Kurz   nachdem 
  186. eines seiner Programme (von Sagrotan V4.01 ist hier die Rede) auf 
  187. dem Public-Domain-Markt erschien, lief schon das Telefon an: 'Das 
  188. Programm stürzt ab', stellte ein Anwender fest. In letzter Minute 
  189. hatte nämlich H.A.  noch kleine Änderungen am Programm  vorgenom-
  190. men,  und dabei einen klitzekleinen Tippfehler an einer  empfind-
  191. lichen Stelle ('Kanal öffnen') begangen. Mit der Cross-Reference-
  192. Liste  oder der Outline-Funktion  der  Weller-TOOLS für GFA-BASIC 
  193. hätte  er  auch  noch in allerletzter  Minute  diesen  Tippfehler 
  194. gefunden.
  195.  
  196.      C.W.  schrieb  ein inzwischen recht bekanntes  Programm  (es 
  197. heißt  1st XTRA  und liegt jedem 1st Word Plus  V3.15  bei),  das 
  198. länger  und länger wurde.  Bei Durchbrechen der 200 kB-Marke  der 
  199. Länge  des  Programm-Quellcodes mußte  die  Variablenorganisation 
  200. umgestellt werden.  Zu viele globale Variablen (etwa 500)  hatten 
  201. sich angesammelt und sollten nun,  wo möglich und  sinnvoll,  als 
  202. lokale Variablen oder als Übergabeparameter definiert werden. Die 
  203. Cross-Reference der Weller-TOOLS für GFA-BASIC erleichterten  die 
  204. Arbeit enorm.  Seither ist der Speicher aufgeräumt. Nur noch etwa 
  205. 30  globale  Variablen werden  für  wichtige  Informationen,  die 
  206. ständig benötigt werden, verbraucht.
  207.  
  208.      P.S.  schrieb  eine  bekannte  Public-Domain-Programmschale. 
  209. Leider  verbrauchte   dieses viel zuviel Speicher,  was  bei  der 
  210. Arbeit damit ein großes Handicap darstellt.  C.W.  bestellte sich 
  211. bei  P.S.  den  Programmcode.  Nach drei Stunden Arbeit  mit  den 
  212. Weller-TOOLS für GFA-BASIC blieben nur noch halb so viele Variab-
  213. len  übrig (viele wurden nur einmal definiert,  aber nie  verwen-
  214. det!), und der Speicherbedarf sank auf ein Drittel.
  215.  
  216.      H.A.  und C.W.  schrieben seinerzeit zusammen an einem  etwa 
  217. 25 kB  großen  Programm.   Jeder  hatte  seine  Aufgaben.  Einmal 
  218. wöchentlich   wurden   die  neuen  oder   geänderten   Proceduren 
  219. (eigentlich:  Unterprogramme) zusammengetragen.  Dabei mußten die 
  220. Variablennamen  übereinstimmen,  und  auch  die  Proceduren,  die 
  221. Übergabeparameter  erwarten,  mußten richtig  aufgerufen  werden. 
  222. Ohne den Weller-TOOLS für GFA-BASIC wäre wahrscheinlich das  Pro-
  223. gramm nie richtig gelaufen.
  224.  
  225.  
  226.  
  227. ə1.2 COMPUTER-UNTERSTÜTZTES PROGRAMMIEREN
  228.  
  229.  
  230.      Wahrscheinlich haben Sie auch Ihre eigenen 'Geschichten  des 
  231. Alltags'.  Lassen  Sie einmal Ihre Tätigkeiten als  Programmierer 
  232. Revue passieren.  Sie werden feststellen, daß leider ein Großteil 
  233. der Zeit und Energie dafür verbraucht wird, Fehler zu finden.
  234.  
  235.      Rechnergestützte Werkzeuge und Methoden bei der  Entwicklung 
  236. von Software verkürzen die Zeit von der Idee bis zur  Fertigstel-
  237. lung  eines  Programmes.  Sie  verwalten Ideen  und  Skizzen  der 
  238. Software-Designer,  prüfen die Plausibilität von Algorithmen  und 
  239. generieren  sogar den Programmcode  auf  Hochsprachen-Ebene.  Sie 
  240. nehmen dem Entwickler Routinearbeiten ab und schaffen ihm  freien 
  241. Raum  für Kreativität.  Sie planen und koordinieren  den  Einsatz 
  242. aller  an  einem Software-Projekt  beteiligten  Personen.  Solche 
  243. Systeme  für 'Computer Aided Software Engeneering' -  kurz  CASE-
  244. Systeme  - sind bislang Unix-Systemen und Großrechnern  vorbehal-
  245. ten.  Einen kurzen Einblick in die wichtigsten Merkmale von CASE-
  246. Systemen gibt der Beitrag:
  247.  
  248.                  'Der Werkzeugkasten füllt sich
  249.   CASE begleitet die Software durch den gesamten Lebenszyklus'
  250.  
  251. in: c't-Special 4, iX-Multiuser-Multitasking-Magazin, 11/1988, S. 
  252. 98-102.
  253.  
  254.      Für den PC-Bereich geben diese Systeme wenig Sinn. Zum einen 
  255. würden  Speicherplatz und Rechenleistung nicht  ausreichen,  aus-
  256. schlaggebend ist aber die Single-User-Konzeption von  'Personal'-
  257. Computern.
  258.  
  259.      Trotzdem gibt es Unterstützung für PC-Programmierer in  Form 
  260. von  zahlreichen  Tools und Utilities,  die  meistens  eine  ganz 
  261. spezielle Funktion anbieten. Eine Übersicht bietet der 600 Seiten 
  262. umfassende  'Utility-Führer' vom  Rossipaul-Verlag.
  263.  
  264.  
  265.  
  266. ə1.3 WERKZEUGE FÜR GFA-BASIC
  267.  
  268.      Das GFA-Entwicklungssystem wird von Haus aus recht  spärlich 
  269. mit  Entwicklungswerkzeugen  ausgestattet.   Lediglich  die  Pro-
  270. grammschale Menux liegt bei.  Einen symbolischen Debugger vermißt 
  271. man  ebensp wie weitere elementare Hilfsmittel wie  Pretty-Lister 
  272. und Cross-Reference-Analyser.
  273.  
  274.      Immerhin ist das GFA-Entwicklungssystem recht  preisgünstig, 
  275. so daß man keine allzu großen Erwartungen anstellen  darf.  Zudem 
  276. erspart der schnelle Interpreter viel Entwicklungszeit und hat in 
  277. geringen  Umfang Hilfsmittel zur  Programmentwicklung  integriert 
  278. (Trace,  Dump, .l-Befehle). Die Ausführungen im Compiler-Handbuch 
  279. zum  erzeugten  Assemble-Code können in gewisser  Weise  manchmal 
  280. einen symbolischen Debugger ersetzen.
  281.  
  282.      Für  die große Schar der GFA-BASIC-Programmierer gibt  es  - 
  283. vor  allem  auf  dem  Public-Domain-Markt  -  einige  zusätzliche 
  284. Hilfsmittel,  die  die Programmierung unterstützen.  Diese  Tools 
  285. erfüllen jeweils einen ganz bestimmten Zweck, und so kann man sie 
  286. in folgende Gruppen aufteilen:
  287.  
  288.  
  289. ə1.3.1 Programm-Schalen, Shells:
  290.  
  291.      Sie integrieren Interpreter,  Compiler und andere  Programme 
  292.      in  eine komfortablere Benutzeroberfläche als die des  Desk-
  293.      tops. 'Turn-arounds', also der Wechsel zwischen Interpreter, 
  294.      Compiler und generiertem Programm, werden vereinfacht.
  295.  
  296.  
  297. ə1.3.2 Wechselbeziehungs-Analysatoren: Cross-Reference-Analyser:
  298.  
  299.      Die geordnete Auflistung von Variablen, Proceduren, Funktio-
  300.      nen und Labels erleichtert die Fehlersuche enorm.  Vor allem 
  301.      bei sehr großen Programmen wird es sehr schwierig, Flüchtig-
  302.      keitsfehler zu finden.
  303.  
  304.  
  305. ə1.3.3 Outliner:
  306.  
  307.      Sie zeigen nur einen Teil des Programmes,  z.B.  nur  Proce-
  308.      dure-Definitionen wie im GFA-BASIC V3-Interpreter.
  309.  
  310.  
  311. ə1.3.4 Editoren:
  312.  
  313.      Editoren für Dialogboxen,  Bildschirm-Masken und  Pull-Down-
  314.      Menüs.  Besonders  in der 'Design-Phase' der  Programmierung 
  315.      helfen diese Programme.  Mit ihnen kann man Benutzeroberflä-
  316.      chen entwickeln und testen, und den entsprechenden Programm-
  317.      code generieren lassen, um ihn in eigene Programme einzubin-
  318.      den.
  319.  
  320.      Text-Editoren  sind nützlich,  wenn man  größere  Änderungen 
  321.      vornehmen möchte,  z.B.  aus mehreren Listings einige  Teile 
  322.      ausschneiden und zusammenfügen.
  323.  
  324.  
  325. ə1.3.5 Konverter:
  326.  
  327.      Konverter  von GW- oder ST-BASIC nach GFA-BASIC  oder  umge-
  328.      kehrt.  Es  gibt auch einen Konverter von GFa-BASIC V2  nach 
  329.      Omikron-BASIC.
  330.  
  331.  
  332. ə1.3.6 Andere Hilfsprogramme:
  333.  
  334.      Source-Code-Lister.   Struktogramm-Konverter  erzeugen   aus 
  335.      einem fertigen Quellcode ein Struktogramm.
  336.  
  337. Beispiele dieser Hilfsprogramme mit Bezugsadressen sind in  Kapi-
  338. tel 5.8 aufgeführt.
  339.  
  340.  
  341.  
  342. ə1.4 DIE WELLER-TOOLS FÜR GFA-BASIC ALS ENTWICKLUNGSUMGEBUNG
  343.  
  344.  
  345. ə1.4.1 Leistungsumfang
  346.  
  347.      Die Weller-TOOLS für GFA-BASIC stellen eine  Entwicklungsum-
  348. gebung dar,  das die wichtigsten Werkzeuge integriert:
  349.  
  350.  
  351. Die besonderen Merkmale:
  352.  
  353.  
  354. ə1.4.2 Cross-Reference-Analyser
  355.  
  356. -    Ausgabe als Zeilenreferenz oder Proceduren-Referenz, z.B:
  357.  
  358.      adr0%     f_load    271  273  277  295
  359.                f_check   731  732  737  745  747
  360.                f_clear  1211 1212 1219
  361.  
  362. -    Findet automatisch viele Tipp- und Flüchtigkeitsfehler, z.B:
  363.  
  364.      adro%     fload     275
  365.      *** Fehler: adro% kommt nur einmal vor, Tippfehler?
  366.  
  367. -    Unterscheidet  zwischen lokalen und globalen  Variablen  und 
  368.      Übergabeparametern.
  369.  
  370. -    Macht Verbesserungsvorschläge,  wenn globale Variablen lokal 
  371.      definiert werden könnten, z.B:
  372.  
  373.      adr_nn%   f_check   735  736  741
  374.      *** Warnung: adr_nn% kommt nur in 1 Procedure vor, evt. 
  375.      lokal definieren!
  376.  
  377.  
  378. ə1.4.3 Flexible Programmschale
  379.  
  380. -    Das  Wechseln  zwischen   Interpreter,   Compiler,   Editor, 
  381.      Resource  Construction  Set usw.  wird mit  der  eingebauten 
  382.      Shell zum Kinderspiel,  besonders bei Verwendung einer Fest-
  383.      platte oder Ramdisk.
  384.  
  385. -    Zweite  Menüleiste,  kann über ASCII-Datei  vollkommen  frei 
  386.      konfiguriert werden.
  387.  
  388. -    Texteditor (z.B Tempus) wird über Kommando-Strings gesteuert 
  389.      und lädt automatisch die LST- und Analysedateien.
  390.  
  391. -    Die wichtigsten Desktop-Funktionen sind integriert:  Dateien 
  392.      löschen,   umbenennen,  kopieren;  Ordner  erzeugen;  freier 
  393.      Speicher auf Diskette.
  394.  
  395.  
  396. ə1.4.4 Outliner
  397.  
  398. -    Unterstützt Analyse von Programmstrukturen und das Auffinden 
  399.      von logischen Fehlern.
  400.  
  401. -    Erweiterte 'Klapp-Funktionen' für Proceduren, Funktionen und 
  402.      Module:  Proceduren werden dargestellt.  daß mit einem Blick 
  403.      erkennbar ist, welche von welcher anderen Procedure aufgeru-
  404.      fen wird ('Who is Who in GFA-BASIC').
  405.  
  406. -    Bibliothek für Schlüsselbegriffe.
  407.  
  408.  
  409. ə1.4.5 Universelles Ausgabekonzept
  410.  
  411. -    Alle Ausgaben wahlweise auf Bildschirm, Drucker oder Datei.
  412.  
  413. -    Unterstützt  hohe und  mittlere  Bildschirmauflösung.  Läuft 
  414.      auch auf Großbildschirm.
  415.  
  416. -    Schriftgrößen und Seitenparameter einstellbar.
  417.  
  418.  
  419. ə1.4.6 Leicht zu bedienen
  420.  
  421. -    Extrahilfe-Modus für alle Menüpunkte.
  422.  
  423. -    Umfangreiche Hilfstexte (ca 107 kB) über  Inhaltsverzeichnis 
  424.      aufrufbar.
  425.  
  426.  
  427. ə1.4.7 Allgemeine Merkmale
  428.  
  429. -    Sehr  schnell  durch Programmierung  der  Kernfunktionen  in 
  430.      Assemble-Code.
  431.  
  432. -    Unterstützung von Programm-Modulen über Kommentarzeilen.
  433.  
  434. -    Weitere Hilfsfunktionen:
  435.  
  436.      Listing-Printer:  Listings werden übersichtlich ausgedruckt, 
  437.      und zwar so,  daß Programm-Module getrennt werden,  wichtige 
  438.      Zeilen  in  Fettschrift hervorgehoben werden,  und  daß  bei 
  439.      Bedarf  auch Seitenumbrüche von Hand in das Programm  einge-
  440.      fügt werden können.
  441.  
  442.      Utilities wie:  REM-Killer,  DATA-Make,  Zeilen  numerieren, 
  443.      Statistik-Funktionen.
  444.  
  445. -    Bis  auf  die  Erzeugung  einer  Cross-Reference  sind  alle 
  446.      Funktionen auch für andere Sprachen,  insbesondere  Omikron-
  447.      BASIC, verwendbar.
  448.  
  449.  
  450. ə1.4.8 Public-Domain- und Profi-Version
  451.  
  452.      Die Weller-TOOLS für GFA-BASIC sind in zwei Version  erhält-
  453. lich,  die  sich  lediglich in der Größe  des  zu  analysierenden 
  454. Programmes  unterscheiden.  Die Public Domain-Version  analysiert 
  455. Programme bis 100 kB,  was für die meisten Anwendungen ausreicht. 
  456. Das über 60 Seiten umfassende Handbuch ist mit allen Bildern  als 
  457. 1st Word Plus-Dokument  und  als  ASCII-Datei  auf  der  Diskette 
  458. enthalten. Siehe auch Kapitel 4.
  459.  
  460.  
  461. ə1.4.9 Pressespiegel
  462.  
  463.      Die  seit Ende 1988 auf dem Public-Domain-Markt  erhältliche 
  464. Version  1.2  und  die Profi-Versionen 1.42  und  3.0  wurden  in 
  465. verschiedenen Magazinen vorgestellt:
  466.  
  467. Magazin              Ausgabe  Seite  Beitrag
  468.  
  469. Public Domain        3/89     56-57  Testbericht
  470. CHIP                 4/88     296    Testbericht
  471. PD-News              3        25-28  Produktinfo
  472. GFA-Club-Nachrichten 3/4 89   16-17  Produktinfo
  473. Atari-Magazin        5/89     14-15  Produktinfo
  474. ST-Vision            2/89     42     Produktinfo
  475. Happy Computer       6/89     40-41  Produktinfo
  476. GFA-Club-Nachrichten 6/89     17     Produktinfo
  477.  
  478.  
  479.  
  480. ə1.5 TIPS ZUM PROGRAMMIEREN
  481.  
  482.      Jeder  Programmierer hat seinen eigenen Stil,  Programme  zu 
  483. schreiben.  Wer einen kleinen Einblick in diese Technik  gewinnen 
  484. möchte,  sollte unbedingt die lehrreichen und zugleich unterhalt-
  485. samen Interviews mit einigen der bedeutendsten Programmierern  in 
  486. Susan Lammers Buch
  487.  
  488.                    'Faszination Programmieren'
  489.  
  490. vom Markt&Technik-Verlag lesen. Jedes Kapitel dieses Buches birgt 
  491. mehr Informationen als die Massen an 'Großen Büchern' verschiede-
  492. ner Verlage.
  493.  
  494.      Ausnahmen bestätigen die Regel, und so kann man dem ambitio-
  495. nierten GFA-BASIC-Programmierer Michael Koflers Buch
  496.  
  497.                 'Referenz-Handbuch GFA-BASIC 3.0'
  498.  
  499. vom Sybex-Verlag empfehlen.  Auf etwa 800 Seiten findet man viele 
  500. wichtige Detailinformationen,  die beim Lösen von Programmierauf-
  501. gaben oder Auffinden von Fehlern entscheidend sein können.
  502.  
  503.      Wenn man gar nicht mehr weiter weiß, kann man auch bei Frank 
  504. Ostrowsky  und  seinen Kolleginnen und Kollegen  direkt  anrufen. 
  505. Erfahrungsgemäß  kommt man meistens aufs erste Mal durch und  hat 
  506. freundliche und kompetente Gesprächspartner.
  507.  
  508.      Tools sind Werkzeuge.  Sie ersetzen nicht den Geist,  können 
  509. ihn  aber wohl beflügeln.  Wenn Sie sich bisher  nicht  besonders 
  510. viele Gedanken über Variablen, Strukturen und Optimierung gemacht 
  511. haben,  haben Sie vielleicht jetzt den Anstoß dazu gefunden.  Mit 
  512. den Weller-TOOLS für GFA-BASIC haben Sie jedenfalls ein mächtiges 
  513. Werkzeug hierfür in der Hand.
  514.  
  515.  
  516.  
  517.  
  518. ə2. EINFÜHRUNG
  519.  
  520.  
  521.  
  522. ə2.1 INSTALLATION
  523.  
  524.  
  525.                             Das  Programm kann in ein  beliebiges 
  526.                        Verzeichnis  kopiert  werden.   Am  besten 
  527.                        dorthin,   wo  auch  GFA-BASIC  ist.   Zur 
  528.                        Installation genügt es notfalls,  daß  nur 
  529.                        die PRG-Datei kopiert wird.
  530.  
  531.                             Es können noch weitere Dateien mitko-
  532.                        piert  werden.  Diese werden dann  automa-
  533.                        tisch beim Programmstart geladen:
  534.  
  535.  
  536.  
  537.  
  538.  
  539. WT_GFA.INF:    Pfade für MENUX, Interpreter, Compiler und Editor
  540. WT_GFA.FSL:    Pfade der flexiblen Programmschale
  541. WT_GFA.HLP:    Datei mit Hilfstexten
  542. WT_GFA.PIC:    Datei mit Hilfsbildschirm
  543.  
  544. Diese Dateien werden im Kapitel 5.2 näher beschrieben.
  545.  
  546.      Im  Programm  ist ein  Druckertreiber  integriert,  der  mit 
  547. Epson- und IBM-Druckern sowie allen kompatiblen (NEC,  Star, ...) 
  548. funktioniert.  Für  exotische Drucker können  alle  Steuerzeichen 
  549. über Patches umdefiniert werden.  Siehe Kapitel 5.3. Eine weitere 
  550. Möglichkeit,  den Drucker anzupassen,  besteht in der  Verwendung 
  551. der bei GFA-BASIC mitgelieferten Druckertreibern.
  552.  
  553.      Es kann noch zusätzlich ein Ordner "KEY" angelegt werden, in 
  554. den  alle  *.KEY-Dateien kopiert werden.  Der Outliner  ist  dann 
  555. standardmäßig auf diesen Ordner eingestellt.
  556.  
  557.      Wenn  die  Dateien  nicht   auf 
  558. Festplatte  kopieren,   sollten  Sie 
  559. nicht mit der Originaldiskette, son-
  560. dern  mit einer Kopie  arbeiten. Für 
  561. eine  bessere Optik können Sie  sich 
  562. ein  Disketten-Etikett auf  einfache 
  563. Weise selbst erstellen. Auf der Dis-
  564. kette   befinden  sich   drei   sog. 
  565. 'Printme'-Dateien,  die vom  Desktop 
  566. aus per Doppelklick ausgedruckt wer-
  567. den  können.  Die Dateien  enthalten 
  568. alle  Steuerzeichen für 9-Nadler  in 
  569. einfacher   Dichte  und   vierfacher 
  570. Dichte,  sowie 24-Nadler in  dreifa-
  571. cher Dichte.
  572.  
  573.  
  574.  
  575. ə2.2 DER BILDSCHIRMAUFBAU
  576.  
  577.      Der  Bildschirmaufbau  (im Bild etwas umgestellt)  ist  sehr 
  578. einfach:  Es  wird neben der Menüleiste nur 1 Fenster  verwendet. 
  579. Das sieht zwar nicht besonders originell aus, reicht aber für den 
  580. beabsichtigten Zweck vollkommen aus. Der Bildschirm wird nach dem 
  581. Schließen von Accessories wieder  restauriert.  Accessories,  die 
  582. nicht  nur  aus einer Dialogbox  bestehen,  sondern  ein  eigenes 
  583. Fenster öffnen, sollten nicht verschoben werden.
  584.  
  585.      Der Aufbau der Menüleiste wird im nächsten Kapitel  ausführ-
  586. lich mit den Funktionen erläutert.
  587.  
  588.      In  der Titelzeile des Fensters steht,  was  gerade  gemacht 
  589. wird.   Ebenso  erscheinen  hier  Meldungen,   z.B.   wenn   eine 
  590. Dateiauswahl-Box  aufgerufen  wird,  oder mit welcher  Taste  ein 
  591. Prozeß angehalten, abgebrochen oder fortgeführt werden kann.
  592.  
  593. In der Infozeile stehen einige aktuelle Parametereinstellungen.
  594.  
  595.      Links stehen die Ausgabegeräte: 'S' für Bildschirm (Screen), 
  596. 'P'  für  Drucker (Printer) und 'F' für Datei  (File).  Wenn  ein 
  597. angeschlossener Drucker empfangsbereit ist,  erscheint neben  dem 
  598. 'P'  ein Häkchen,  daneben die Druckerparameter.  Die  aktivierte 
  599. Scrollfunktion wird mit einem Klingelsymbol angezeigt.
  600.  
  601.      Falls eine Datei geladen ist,  werden Dateiname,  Dateilänge 
  602. und Anzahl der Zeilen in der Mitte der Infozeile angezeigt.
  603.  
  604.      Rechts  wird  der freie Speicherplatz  angezeigt.  Dies  ist 
  605. der  Wert,  den  FRE(0) zurück gibt.  Wenn  eine  Cross-Reference 
  606. erzeugt wird,  wird dieser Wert stetig kleiner,  da die  internen 
  607. Felder  gefüllt werden.  Bevor in ein anderes Programm  verzweigt 
  608. wird,  wird dieser Speicherplatz an GEM zurückgegeben, damit sich 
  609. das aufgerufene Programm frei bedienen kann.
  610.  
  611.      Fast aller Text, der auf dem Bildschirm erscheint, kann auch 
  612. auf eine Datei oder den Drucker umgeleitet werden.
  613.  
  614.  
  615.  
  616.  
  617. ə3. REFERENZ-TEIL: BESCHREIBUNG DER FUNKTIONEN
  618.  
  619.  
  620.  
  621. ə3.1 WT_GFA
  622.  
  623.      'Info'  gibt folgende Informationen aus:  Falls sich in  dem 
  624. Pfad,  von  dem die Weller-TOOLS für GFA-BASIC gestartet  wurden, 
  625. eine  Datei namens 'WT_GFA.PIC' befand,  wurde diese geladen  und 
  626. wird  nun angezeigt.  Mit einem Mausklick oder  einer  beliebigen 
  627. Taste geht es weiter. In einer Alert-Box werden dann Versionsnum-
  628. mer, Datum und weitere Hinweise angezeigt.
  629.  
  630.      Unter  'WT_GFA' können Accessories  aufgerufen  werden.  Der 
  631. Bildschirm wird nach dem Schließen von Accessories wieder restau-
  632. riert.  Falls ein Accessory nicht eine Dialogbox öffnet,  sondern 
  633. ein eigenes Fenster,  sollte dieses nicht verschoben werden  oder 
  634. andere  Funktionen aufgerufen werden.  Hinter der  Restaurations-
  635. funktion verbirgt sich keine vollständige 'Redraw'-Routine,  son-
  636. dern nur ein SGET/SPUT.
  637.  
  638.  
  639.  
  640. ə3.2 DATEI
  641.  
  642.  
  643. ə3.2.1 LST-Datei laden
  644.  
  645.      Mit 'LST-Datei laden' wird eine Datei in den Arbeitsspeicher 
  646. geladen.  Es erscheint eine Dateiauswahlbox, die bereits den Pfad 
  647. enthält, von dem die letzte Datei geladen wurde.
  648.  
  649.      Es  können  beliebige  Dateien  geladen  werden,   da  nicht 
  650. untersucht  wird,  ob es sich tatsächlich um eine  mit  DEFLIST 0 
  651. abgespeicherte  GFA-BASIC-Datei  handelt.   Damit  ist  es   also 
  652. möglich,  auch  Dateien  anderer Computersprachen  oder  sonstige 
  653. Dateien zu laden.
  654.  
  655.      Die  maximale Größe einer Datei,  die geladen  werden  kann, 
  656. wird  in der Titelzeile des GEM-Fensters  angezeigt.  Wird  diese 
  657. überschritten, erscheint eine entsprechende Meldung. Es ist nicht 
  658. möglich,  nur  einen Teil einer (eventuell sehr großen) Datei  zu 
  659. laden.
  660.  
  661.      Die Datei wird wie bei den meisten Texteditoren, vollständig 
  662. geladen  und  befindet sich auch vollständig  immer  im  Speicher 
  663. (auch wenn ein externes Programm aufgerufen wird).  Dadurch  kann 
  664. das  Programm  sehr schnell  die  Kernfunktionen  ausführen.  Die 
  665. meisten der zeitkritischen Funktionen sind in Assembler  program-
  666. miert.  Die  Erzeugung einer Cross-Reference einer 300 kB  großen 
  667. Datei dauert nur wenige Minuten!
  668.  
  669.      Unmittelbar  nach  dem Ladevorgang  werden  die  Zeilenlänge 
  670. berechnet  und  die Anzahl der Definitionen  (Zeile  beginnt  mit 
  671. 'P').  Die   Bestimmung  dieser Werte benötigt  auch  bei  extrem 
  672. großen Dateien nur Bruchteile einer Sekunde.
  673.  
  674.      Die geladene Datei befindet sich so lange im  Speicher,  bis 
  675. eine neue geladen wird oder der Speicher mit 'Speicher freigeben' 
  676. (s. Kapitel 3.6.7) gelöscht wird.
  677.  
  678.  
  679. ə3.2.2 Ausgabegeräte
  680.  
  681.      Hiermit  wird  das  Ausgabegerät  festgelegt.   Ein  Häkchen 
  682. markiert,  welche Geräte angewählt wurden.  'Datei' und 'Drucker' 
  683. können  nicht gleichzeitig aktiviert werden,  sie  schalten  sich 
  684. gegenseitig aus.  Die Einstellungen werden auch in der  Infozeile 
  685. angezeigt.
  686.  
  687.      Das  Prinzip von 'allgemeinen Ausgabegeräten'  wurde  konse-
  688. quent  im  ganzen Programm durchgehalten.  Deshalb  ist  es  z.B. 
  689. möglich,  bei  'Listing drucken' in eine Datei  zu  drucken,  und 
  690. diese Datei,  die dann alle Steuerzeichen enthält,  auf einem MS-
  691. DOS-  oder  VMS-Computer  per 'Copy'-Befehl auf  einem  dort  zur 
  692. Verfügung stehenden Drucker formatiert auszudrucken. Anders herum 
  693. gesagt:  Wenn  ein Listing sofort auf einem  Drucker  ausgedruckt 
  694. werden soll, muß der Drucker als Ausgabegerät gewählt sein!
  695.  
  696.  
  697. ə3.2.3 Bildschirmparameter
  698.  
  699.      Hiermit wird die Größe der Bildschirmzeichen gewählt. Abhän-
  700. gig davon,  in welcher Bildschirmauflösung das Programm gestartet 
  701. wurden,  sind  hier  13  Punkt  (hohe  Auflösung)  oder  6  Punkt 
  702. (mittlere  Auflösung) voreingestellt.  Bei kleinen Schriften  ist 
  703. die Übersichtlichkeit größer, besonders bei der Outline-Funktion. 
  704. Das Programm läuft auch mit Großbildschirmen und verwendet  dabei 
  705. den ganzen Bildschirmbereich.
  706.  
  707.      Wenn  'Scrollen' eingeschaltet ist  (Voreinstellung),  läuft 
  708. der Bildschirm ohne anzuhalten durch,  wenn eine  Bildschirmseite 
  709. vollgeschrieben  ist.  Mit den Tastaturkombinationen <Control>  S 
  710. und <Control> Q kann die Bildschirmausgabe pausiert bzw.  fortge-
  711. führt werden.
  712.  
  713.      Bei  ausgeschaltetem 'Scrollen' hält  die  Bildschirmausgabe 
  714. jedesmal an,  wenn eine Bildschirmseite vollgeschrieben ist.  Mit 
  715. einer beliebige Taste kann die Bildschirmausgabe dann fortgesetzt 
  716. werden. Auch hier kann mit den Tastaturkombinationen <Control>  S 
  717. und <Control> Q die Bildschirmausgabe pausiert  bzw.  fortgeführt 
  718. werden.
  719.  
  720.      Bei  gleichzeitiger Ausgabe auf Drucker oder Datei wird  die 
  721. Ausgabe immer mit Scrollen durchgeführt.
  722.  
  723.  
  724. ə3.2.4 Druckerparameter
  725.  
  726.      Hiermit können folgende Druckerparameter eingestellt  werden 
  727. (voreingestellte Werte in Klammern):  Linker Rand  (12),  rechter 
  728. Rand (80),  Länge des Papiers in Zoll (12),  Seitenvorschub  nach 
  729. Druckende (ja).
  730.  
  731.      Der  Drucker  wird bei Beginn des  Druckvorganges  zurückge-
  732. setzt,  dann auf Schmalschrift (17.2 cpi) und kleineren Zeilenab-
  733. stand (8 lpi) umgeschaltet,  und schließlich die  o.g.  Parameter 
  734. eingestellt. Nach einem Druckvorgang kann wiederum ein Druckerre-
  735. set ausgelöst werden. Die Steuerzeichen lassen sich auf exotische 
  736. Drucker anpassen (s. Kap. 5.3).
  737.  
  738.  
  739. ə3.2.5 Druckertest
  740.  
  741.      Druckertest führt einen einfachen Test aus:  Einige  Zeichen 
  742. werden  ausgegeben,  um  zu  erkennen,  ob  die  Ränder  und  der 
  743. Zeilenabstand richtig eingestellt sind.
  744.  
  745.      Unabhängig von diesem Druckertest wird jedesmal,  bevor eine 
  746. Druckerausgabe  beginnt,  nachgeprüft,  ob der Drucker  empfangs-
  747. bereit ist. Wenn nicht, kann der Prozeß (nach dem Einschalten des 
  748. Druckers)  weitergeführt  oder abgebrochen  werden.  Während  des 
  749. Druckvorganges  sollte der Drucker nicht länger als  30  Sekunden 
  750. ausgeschaltet werden.
  751.  
  752.  
  753. ə3.2.6 Ende
  754.  
  755.      'Ende' verläßt das Programm,  ohne vorher nachzufragen.  Die 
  756. Sicherheitsabfrage wurde absichtlich weggelassen,  da alle Ergeb-
  757. nisse  - anders als z.B.  bei einem  Textverarbeitungsprogramm  - 
  758. reproduzierbar sind.  Ein 'mechanischer' Schutz ist aber trotzdem 
  759. gegeben,  denn man muß mit der Maus einigen Weg  zurücklegen,  um 
  760. diesen Menüeintrag zu erreichen.
  761.  
  762.  
  763.  
  764. ə3.3 SHELL
  765.  
  766.  
  767. ə3.3.1 Zweck der Programmschale
  768.  
  769.      Die Programmschalen unterstützen die interaktive Zusammenar-
  770. beit mit anderen Programmen, insbesondere den Programmen des GFA-
  771. BASIC-Entwicklungssystems.  Von  diesen Schalen aus kann  in  die 
  772. wichtigsten Programme direkt verzweigt werden.  Dies setzt natür-
  773. lich voraus,  daß die Programme auch tatsächlich verfügbar  sind: 
  774. Wer nur ein Diskettenlaufwerk hat,  muß entweder alle  benötigten 
  775. Programme auf eine Diskette kopieren,  oder er muß vor Aufruf des 
  776. Programmes die entsprechende Diskette einlegen.  Mit zwei Disket-
  777. tenlaufwerken geht die Arbeit etwas bequemer.  Wer über  genügend 
  778. Speicherplatz  verfügt,  kann  sich nach  Belieben  eine  Ramdisk 
  779. anlegen,  und von dort die Programme aus der Schale aufrufen. Der 
  780. größte  Komfort wird unter Verwendung einer Festplatte  erreicht. 
  781. Da hier die Ladezeiten bei Bruchteilen einer Sekunde liegen,  ist 
  782. man so schnell im neuen Programm,  daß man meinen könnte, es wäre 
  783. Bestandteil der Weller-TOOLS für GFA-BASIC.
  784.  
  785.  
  786. ə3.3.2 Konfiguration der festen GFA-Programmschale
  787.  
  788.      Diese Schale wird über die Datei 'WT_GFA.INF'  konfiguriert. 
  789. Folgende Datei ist dem Programm beigelegt:
  790.  
  791. A:\MENUX.PRG        * In dieser Datei stehen Pfadangaben und
  792. A:\GFABASIC.PRG     * Dateinamen für die feste Programm-
  793. A:\GFABASI2.PRG     * schale ab V3.01. Reihenfolge: Menux,
  794. A:\GFA_BCOM.PRG     * Interpreter V3, Interpreter V2, Compi-
  795. A:\TEMPUS.PRG       * ler V2, Editor (z.B. Tempus ab V1.10).
  796.  
  797.      Beim Starten des Programmes wird diese Datei geladen,  falls 
  798. sie vorhanden ist.  Sie muß sich im gleichen Pfad  befinden,  wie 
  799. das  Programm  selbst.  Der Ladevorgang wird kurz  am  Bildschirm 
  800. angezeigt.  Es bleibt einem unbenommen,  andere Programme als die 
  801. vorgesehenen einzutragen.
  802.  
  803.      Der  Texteditor wird besonders behandelt.  Diesem wird  über 
  804. einen sog. 'Enviroment-String' eine Ladeanweisung mitgegeben:
  805.  
  806. -    Falls noch keine LST-Datei geladen wurde, wird keine Ladean-
  807.      weisung übergeben.
  808.  
  809. -    Falls  bereits eine LST-Datei geladen wurde und  noch  keine 
  810.      Ausgabedatei produziert wurde,  wird diese Datei vom  Editor 
  811.      geladen.
  812.  
  813. -    Falls schon eine Ausgabedatei produziert wurde,  werden  die 
  814.      sowohl  die LST-Datei als auch die Ausgabedatei  vom  Editor 
  815.      geladen.
  816.  
  817.      Dieser  automatische Ladevorgang funktioniert nur mit  Text-
  818. editoren,  die  den  Enviroment-String  auslesen.  Das  ist  bei-
  819. spielsweise  bei Tempus ab V1.10 und 1st Word Plus ab  V2.02  der 
  820. Fall.
  821.  
  822.      Die  Schale  ist  sehr  stabil.  Sie  verträgt  die  meisten 
  823. Abstürze  in  den aufgerufenen Programmen  und  meldet  Programm-
  824. eigene  Desktops wieder ab,  falls das vom Programm selbst  nicht 
  825. erledigt wurde (alte Versionen von 1st Word Plus und Tempus).
  826.  
  827.  
  828. ə3.3.3 Die flexible Programmschale
  829.  
  830.      Mit  dieser  flexiblen  Programmschale  können  bis  zu  100 
  831. Programme   direkt   aufgerufen  werden.   Dazu   muß   nur   der 
  832. entsprechende  vordefinierte Eintrag in der Menüleiste  angewählt 
  833. werden.
  834.  
  835.      Die  Programmschale besitzt eine eigene  Menüleiste,  welche 
  836. frei  zusammengestellt  werden  kann.  Dabei  können  sowohl  die 
  837. Einträge  in  der Menüleiste frei bestimmt werden als  auch  evt. 
  838. Kommandostrings,  die  manche  Programme  auswerten.  Diese  Pro-
  839. grammschale  wird über die Datei WT_GFA.FSL  konfiguriert  (siehe 
  840. Kapitel 5.2.4).  Es kann jederzeit über den Menüpunkt  'FSL-Datei 
  841. laden' eine andere Konfiguration verwendet werden.
  842.  
  843.      Mit  '->  Hauptmenü' gelangt man wieder zur  Menüleiste  des 
  844. Hauptprogrammes.  Auch  in  der flexiblen  Programmschale  können 
  845. Accessories aufgerufen werden.
  846.  
  847.  
  848. ə3.2.4 Desktop-Funktionen
  849.  
  850.      Die  wichtigsten Funktionen des Desktops sind hier  erreich-
  851. bar. Man kann:
  852.  
  853. -    beliebige Programme starten
  854. -    Dateien löschen
  855. -    Dateien umbenennen
  856. -    Dateien kopieren
  857. -    neue Ordner erzeugen
  858. -    den freien Speicherplatz eines Laufwerks ermitteln.
  859.  
  860.      Damit wird manches andere Accessory überflüssig,   bzw.  das 
  861. Verlassen des Programms. Da die graphische Benutzeroberfläche des 
  862. Desktops  hier fehlt,  werden die Aktionen von Hinweisen  in  der 
  863. Titelzeile begleitet.
  864.  
  865. Beispiel: Datei umbenennen
  866.  
  867.      Zuerst wählt man mit der Dateiauswahlbox die Datei  an,  die 
  868. umbenannt  werden  soll.  Dann gibt man mit  Hilfe  der  nächsten 
  869. Dateiauswahlbox den neuen Namen an. Mit 'Abbruch' kann die Aktion 
  870. jederzeit  abgebrochen werden.  Ein Verschieben durch  Umbenennen 
  871. ist nicht möglich.
  872.  
  873.      Mit 'Set-Datei laden' können weitere beliebige Konfiguratio-
  874. nen nachgeladen werden.
  875.  
  876.  
  877. ə3.3.5 Aspekte des Speicherplatzes
  878.  
  879.      Bevor  ein  externes  Programm  aufgerufen  wird,  wird  der 
  880. gesamte Speicherplatz,  der momentan nicht vom Programm  benötigt 
  881. wird,  an GEM zurückgegeben (RESERVE 0), so daß sich das aufgeru-
  882. fene Programm selbst bedienen kann.
  883.  
  884.      Trotzdem  kann  es vorkommen,  daß der  Speicherplatz  nicht 
  885. ausreicht,  denn der Programmcode und die internen Variablen  des 
  886. Programms  bleiben,  während das aufgerufene Programm  läuft,  im 
  887. Speicher im Hintergrund erhalten.  Dadurch kann es Speicherplatz-
  888. probleme  geben.  Deshalb gibt es die Funktion 'Speicher  freige-
  889. ben'.  Dabei  werden  einige  Felder und  Variablen  im  Programm 
  890. gelöscht.
  891.  
  892.  
  893. ə3.4 X-REF
  894.  
  895.  
  896. ə3.4.1 Zweck der Cross-Reference-Listen
  897.  
  898.      Die wichtigste Unterstützung bei der Entwicklung eines  Pro-
  899. grammes ist die Erzeugung einer aussagekräftigen Cross-Reference-
  900. Liste,  zu deutsch: 'Wechselbeziehungsliste'. Diese hilft, sowohl 
  901. Tippfehler  als  auch logische Fehler  schnell  aufzufinden.  Den 
  902. Sprachdefinitionen von GFA-BASIC tragen die Weller-TOOLS für GFA-
  903. BASIC  dabei voll Rechnung,  insbesondere der  Trennung  zwischen 
  904. lokalen und globalen Variablen und Übergabeparametern.
  905.  
  906.      In der Cross-Reference-Liste werden alle Variablen, Procedu-
  907. ren und Marken (labels) aufgeführt. Variablen werden nach lokalen 
  908. und  globalen  Variablen sowie  Übergabevariablen  unterschieden. 
  909. Offensichtliche Fehler,  z.B.  die nur einmalige Verwendung einer 
  910. Variable,  werden  protokolliert.  Bei globalen Variablen  werden 
  911. Vorschläge unterbreitet,  z.B wenn überlegt werden sollte, ob die 
  912. Variable lokal gemacht werden sollte.  Mehrfache Verwendungen von 
  913. Namen für verschiedene Variablentypen werden aufgeführt.
  914.  
  915.      Mit  Hilfe dieser Funktion kann besonders  in  umfangreichen 
  916. Programmen  Variablen-Müll beseitigt und die Verwendung  von  Va-
  917. riablen unter Speicherplatz- und logischen Gesichtspunkten  opti-
  918. miert werden.
  919.  
  920.      Das  erste  Cross-Reference-Listing für GFA-BASIC  wurde  im 
  921. Artikel  'Cross-Referenz-Listings in GFA-BASIC' von H.  Bauch  in 
  922. der 'ST Computer' Nr.  5/87 S. 36-46 vorgestellt. Der Begleittext 
  923. endet mit dem Satz: 'Mit X-REF sollte dem GFA-BASIC-Programmierer 
  924. das Leben hinsichtlich des Aufspürens von Tippfehlern,  aber auch 
  925. bei der Verbesserung der Dokumentation, erleichtert werden.'
  926.  
  927.  
  928. ə3.4.2 X-REF erzeugen
  929.  
  930.      Mit  dem Menüpunkt 'X-REF erzeugen' wird der Prozeß  gestar-
  931. tet.  Falls noch keine Datei geladen wurde, macht  eine Alert-Box 
  932. darauf aufmerksam.
  933.  
  934.      Die Programmdatei muß als ASCII-Datei vorliegen.  Diese wird 
  935. im  Interpreter  mit 'SAVE,A' als LST-Datei  erzeugt.  *.GFA  und 
  936. *.BAS-Dateien  sind keine ASCII-Dateien.  Um auf  einfache  Weise 
  937. Statements  von Namen unterscheiden zu können,  muß das  Programm 
  938. mit 'DEFLIST 0' abgespeichert werden.  Diese Einstellung ist  die 
  939. Standardeinstellung ab der Version 2 des  GFA-BASIC-Interpreters. 
  940. Dabei werden alle Statements groß geschrieben  (PRINT,  WHILE...) 
  941. und alle Namen klein (file$,  pos%,...). Es wird nicht überprüft, 
  942. ob  die  geladene  Datei tatsächlich  diesen  Anforderungen  ent-
  943. spricht.
  944.  
  945.      Während  der Erzeugung einer Cross-Reference-Liste wird  ein 
  946. Protokoll  erzeugt.  Die Ausgabe wird auf die in  'Ausgabegeräte' 
  947. bestimmten Geräte geleitet.  Bei Dateien wird die für  Protokolle 
  948. übliche Endung 'LOG' vorgeschlagen.
  949.  
  950.      Das  Protokoll ist ein ASCII-Text,  der nicht in  den  unter 
  951. 'Druckerparameter' eingestellten Werten formatiert wird.  Deshalb 
  952. kann eine Zeile länger als die maximal Breite einer Zeile werden, 
  953. die  ein Editor akzeptiert (1st Word Plus 150,  Tempus 255  Spal-
  954. ten).
  955.  
  956.  
  957. Beispiel: Protokoll-Datei (*.LOG)
  958.  
  959. X-REF Protokoll am 21.11.88 um 22:45
  960. ------------------------------------
  961.   23  0.4% pd
  962.   60  1.6% e_select
  963.  100  3.0% e_pars
  964.  123  3.5% e_statistics
  965. ...
  966.  
  967. 1142 35.9  new_var_typ
  968. 1149 36.1  test_error
  969. 1195 37.3  xref_out_lines
  970. 1212 37.8  xref_out_procs
  971. 1311 40.7% xref_out_locals
  972. ...
  973.  
  974.      Die  Erzeugung einer Cross-Reference-Liste ist eine  aufwen-
  975. dige analytische Arbeit.  Die Weller-TOOLS für GFA-BASIC arbeiten 
  976. aufgrund  einiger Maschinenroutinen so schnell,  daß  selbst  bei 
  977. einer 300 kB großen Datei das Ergebnis nach drei bis fünf Minuten 
  978. erwartet werden kann.
  979.  
  980.  
  981. ə3.4.3 X-REF ausgeben
  982.  
  983.      Bei der Erzeugung werden die Ergebnisse der Cross-Reference-
  984. Analyse im Speicher abgelegt.  Erst durch 'X-REF ausgeben' werden 
  985. sie in eine Form gebracht, die aussagekräftig ist. Die Ergebnisse 
  986. können mehrmals - auf verschieden Weise - ausgegeben werden.
  987.  
  988.      Variationen ergeben sich durch die Wahl verschiedener Ausga-
  989. begeräte  und  deren verschiedene Parameter,  durch  die  Auswahl 
  990. dessen,  was alles ausgeben werden soll, sowie zwei verschiedenen 
  991. Reference-Modi:  der  Proceduren-Reference und  der  Zeilen-Refe-
  992. rence.
  993.  
  994.      Bei  der Zeilen-Reference werden die gefundenen Namen  unter 
  995. Angabe der Zeilennummern, in der sie auftreten, aufgeführt. Kommt 
  996. ein Name in einer Zeile mehrmals vor, wird er nur einmal genannt. 
  997. Diese Form der Cross-Reference ist die gebräuchliche, und hierfür 
  998. gibt es für GFA-BASIC bereits ein paar Public-Domain-Programme.
  999.  
  1000.      Die  Zeilennummern beginnen immer ab Spalte  20.  Falls  ein 
  1001. Name länger als 18 Zeichen ist,  beginnen die Zeilennummern  eine 
  1002. Zeile tiefer.  Die Zeilennummern haben maximal 6  Dezimalstellen, 
  1003. was bedeutet,  daß die obere Grenze bei 999999 Zeilen liegt. Gibt 
  1004. es  mehr Zeilennummern,  als in die durch die  maximale  Drucker- 
  1005. oder Bildschirmbreite definierte Zeile paßt, werden die folgenden 
  1006. Zeilennummern umgebrochen, d.h. in die nächste Zeile gesetzt.
  1007.  
  1008.      Bei  der Proceduren-Reference werden  zusätzlich  diejenigen 
  1009. Proceduren  aufgeführt,  in denen ein Name (d.h.  eine  Variable, 
  1010. Procedure  oder  ein Label)  vorkommt.  In  einer  strukturierten 
  1011. Sprache wie GFA-BASIC ist diese Form wesentlich aussagekräftiger. 
  1012. Am besten erkennen Sie das an dem ausführlichen Beispiel auf  den 
  1013. folgenden Seiten.
  1014.  
  1015.      Dabei werden die meisten Tipp- und sonstigen  Flüchtigkeits-
  1016. fehler von den Weller-TOOLS für GFA-BASIC erkannt und reklamiert. 
  1017. Dort,  wo  Optimierungen bei der Verwendung von  Variablen  ange-
  1018. bracht sind (eigentlich: zu sein scheinen), wird ein entsprechen-
  1019. der Vorschlag unterbreitet.
  1020.  
  1021.  
  1022. ə3.4.4 Beispiel: Cross-Reference-Liste
  1023.  
  1024. Die folgende Liste wurde nachträglich in kursiver Schrift kommen-
  1025. tiert.  Bei diesem etwas älteren Beispiel handelt es sich um GFA-
  1026. V2-Code.
  1027.  
  1028. Cross-Reference-Liste von: E:\WT_GFA\WT_110.LST
  1029. Erzeugt von X-REF der Weller-TOOLS für GFA-BASIC
  1030. am 21.11.1988 um 23:18:38
  1031. =================================================================
  1032.  
  1033.             Datei: E:\WT_GFA\WT_110.LST
  1034.             Größe: 101033 Byte
  1035.     Anzahl Zeilen: 3254
  1036. Anzahl Proceduren: 113
  1037.    1 Real-Variablen
  1038.    1 Real-Felder
  1039.   41 Integer-Variablen
  1040.    3 Integer-Felder
  1041.   32 String-Variablen
  1042.    9 String-Felder
  1043.   22 Boolean-Variablen
  1044.    0 Boolean-Felder
  1045.  102 Proceduren
  1046.   11 Proceduren mit Übergabeparameter
  1047.    7 Labels
  1048.  
  1049. 1 Real-Variablen
  1050. ------------------------------------
  1051.  
  1052. o...................xref_show_max_nam_anz      996
  1053.   *** Kommt in nur einer Procedure vor! Evt. lokal definieren!
  1054.   *** Fehler: o kommt nur einmal vor! Tippfehler?
  1055.  
  1056. Hier  handelte es sich tatsächlich um einen  Tippfehler.  Gemeint 
  1057. war  die Ziffer 0.  Der Fehler tritt nie als Runtime-Fehler  auf, 
  1058. da  folgendes  vorlag:  FOR  i%=o to 5.  Es werden  aber  6  Byte 
  1059. Speicherplatz  angelegt,  auch wenn die Variable 'o' nie  benützt 
  1060. würde.  MERGE-Dateien von Resource-Construction-Sets  produzieren 
  1061. i.a. mehr Deklarationen, als dann tatsächlich benötigt werden.
  1062.  
  1063.  
  1064. ...
  1065.  
  1066. 41 Integer-Variablen   (=41 * 4 Byte = 164 Byte)
  1067. ------------------------------------
  1068.  
  1069. adr%................e_select          87
  1070.                     e_statistics     124  130  133  138
  1071.                     statistics       177  185  208  233
  1072.                     xref_make        573  627
  1073.                     xref_proc_nam    671  675  698  701
  1074.                     ol_filter       1556 1603
  1075.                     klapper         1725 1745
  1076.                     num_lines       1782 1796
  1077.                     look_between    1974 1982 1988 1992
  1078.                     remkill         2044 2064
  1079.                     print_listing   2201 2222 2242
  1080.                     kopf            2299
  1081.                     line_input      2719 2721 2722 2723
  1082.  
  1083. Soooo übersichtlich!  Man kann genau erkennen,  wo diese Variable 
  1084. überall  vorkommt.  Die Angabe der entsprechenden Proceduren  ist 
  1085. dabei wesentlich informativer, als alleine die Zeilennummern.
  1086.  
  1087. cnt_c%..............statistics       184  187  192
  1088.   *** Kommt in nur einer Procedure vor! Evt. lokal definieren!
  1089.  
  1090. Hier  wird  der Rat nicht befolgt,  da die  Procedure  statistics 
  1091. öfters aufgerufen wird,  wobei evt.  schon berechnete Werte nicht 
  1092. noch einmal berechnet werden sollen.
  1093.  
  1094. ...
  1095.  
  1096. 3 Integer-Felder
  1097. ------------------------------------
  1098.  
  1099. proc_start%().......xref_make        547  550  551
  1100.                     xref_proc_nam    656
  1101.                     xref_out_procs  1225 1243
  1102.  
  1103. ...
  1104.  
  1105. 32 String-Variablen
  1106. ------------------------------------
  1107.  
  1108. e_ext$..............xref_clear      1487
  1109.   *** Kommt in nur einer Procedure vor! Evt. lokal definieren!
  1110.   *** Fehler: e_ext$ kommt nur einmal vor! Tippfehler?
  1111.  
  1112. Tatsächlich,  hier war noch eine Variable aus früheren  Versionen 
  1113. liegengeblieben,  die nicht mehr benötigt wird, und versehentlich 
  1114. nicht entfernt wurde.
  1115.  
  1116. info$...............HAUPTPROGRAMM     12   13
  1117.                     xref_clear      1487
  1118.                     init_vars       2488 2489
  1119.                     info            2799 2801
  1120.  
  1121. So  sieht  das aus,  wenn eine Variable nicht nur  in  Proceduren 
  1122. vorkommt, sondern auch im Hauptprogramm.
  1123.  
  1124. ...
  1125.  
  1126. 9 String-Felder
  1127. ------------------------------------
  1128.  
  1129. bomb$().............bombs           2727 2728 2729 2733 2736 2739
  1130.   *** Kommt in nur einer Procedure vor! ERASE in dieser Procedure?
  1131.  
  1132. Diese Meldung soll den Mißstand vermeiden helfen, daß Felder, die 
  1133. nur  vorübergehend benötigt werden (hier:  Sprites),  nicht  mehr 
  1134. gelöscht werden.
  1135.  
  1136. ...
  1137.  
  1138. 22 Boolean-Variablen
  1139. ------------------------------------
  1140.  
  1141. komm_found!.........xref_entf_komm   762  767  771
  1142.   *** Kommt in nur einer Procedure vor! Evt. lokal definieren!
  1143.  
  1144. Hier war beim Programmieren noch nicht sicher,  ob diese Variable 
  1145. auch noch außerhalb benötigt würde (was dann offensichtlich nicht 
  1146. der Fall war). Also in die LOCAL-Liste übernehmen.
  1147.  
  1148. prt_ready!..........print_listing   2154 2157 2159 2161
  1149.   *** Kommt in nur einer Procedure vor! Evt. lokal definieren!
  1150.  
  1151. Dito
  1152. ...
  1153.  
  1154.  
  1155. 102 Proceduren    ohne Übergabeparameter
  1156. ------------------------------------
  1157.  
  1158. ...
  1159. xref_out............pd                39
  1160.                     xref_out        1012
  1161.  
  1162. xref_out_items......xref_out        1058
  1163.                     xref_out_items  1083
  1164.  
  1165. xref_out_locals.....xref_out        1061
  1166.                     xref_out_locals 1311
  1167.  
  1168. xref_out_multi......xref_out        1064
  1169.                     xref_out_multi  1368
  1170.  
  1171. xref_proc_nam.......xref_make        609  612   zweimal verwendet
  1172.                     xref_proc_nam    650        einmal definiert
  1173.  
  1174. xref_proc_ref.......pd                40
  1175.                     xref_proc_ref   1445
  1176.  
  1177. In  großen  Programmen hat man  einen  besseren  Überblick,  wenn 
  1178. Gruppen  von Funktionen und Variablen nach festem Schema  benannt 
  1179. werden (orthogonale Namensstruktur,  ungarische  Notation,  ...). 
  1180. Das  hier  sind  ein paar Proceduren  aus  dem  MODUL  xref.  Die 
  1181. lokale Variablen hier beginnen ebenfalls mit 'xref_'.
  1182.  
  1183. ...
  1184.  
  1185. 11 Proceduren mit Übergabeparameter
  1186. ------------------------------------
  1187.  
  1188. test_error()........xref_out_items  1134
  1189.                     test_error      1149
  1190.  
  1191. weg$()..............xref_make        605
  1192.                     xref_suche_nam   848
  1193.                     test_error      1157
  1194.                     xref_out_procs  1278
  1195.                     xref_out_multi  1382 1387 1391 1393 1407 1412
  1196.                     scrn_halt       2788
  1197.  
  1198. Hier  ist noch eine Unzulänglichkeit in X-REF:  weg$() ist  keine 
  1199. Procedure, sondern eine definierte Funktion. Diese werden vorläu-
  1200. fig  noch als Procedure angesehen.
  1201.  
  1202. ...
  1203.  
  1204. 7 Labels
  1205. ------------------------------------
  1206.  
  1207. bomb_data...........bombs           2730
  1208.                                     3038
  1209. Wo  ist die Zeile 3038?  Sie steht hinter der letzten  Procedure, 
  1210. nämlich dort, wo auch viele andere DATA's stehen (sog. 'DATA-Sec-
  1211. tion').  Da  man den DATA-Werten,  sofern es sich um Zahlen  z.B. 
  1212. eines Maschinenprogramms handelt, nicht viel ansehen kann, werden 
  1213. oft die DATA's aus dem algorithmischen Teil herausgenommen und an 
  1214. das Programmende plaziert.
  1215.  
  1216. ...
  1217.  
  1218. * Proceduren mit lokalen Variablen und/oder  Übergabeparametern:
  1219. ----------------------------------------------------------------
  1220.  
  1221. Die Funktionen und Variablen werden unsortiert  aufgeführt,  also 
  1222. in der Reihenfolge, in der sie im Programmlisting vorkommen.
  1223.  
  1224. pd..................pd_menu0%
  1225. e_select............pos_nn%   d%
  1226. e_pars..............pos_nn%   e_lw%
  1227. statistics..........d%        pos_nn%   d$        t$        test$
  1228. a_file_kontrolle....m$        bak%      pos_nn%
  1229. f_del...............f_del$
  1230. f_copy..............f_copy_source$      f_copy_target$      f_copy
  1231. _len%
  1232. f_ren...............f_ren_source$       f_ren_target$
  1233. dir_make............dir_make$
  1234. d_free..............lw$
  1235. ...
  1236. bombs...............bomb_nn%  bomb_front%         bomb_rear%
  1237.  
  1238. Auch wieder ein Beispiel für die Namensvergabe.
  1239.  
  1240. Mehrfache Verwendung von Namen in verschiedenen Variablentypen:
  1241. ---------------------------------------------------------------
  1242.  
  1243.     akt_lw% für Integer-Variablen
  1244. und akt_lw$ für String-Variablen
  1245.  
  1246.     weg% für Integer-Variablen
  1247. und weg$ für String-Variablen
  1248.  
  1249.     proc$ für String-Variablen
  1250. und proc$() für String-Felder
  1251.  
  1252.     zeile$ für String-Variablen
  1253. und zeile$() für String-Felder
  1254.  
  1255. Insgesamt 4 Mehrfachbelegungen für Namen
  1256.  
  1257. Mit  Hilfe  dieser letzten Liste kann  man  ebenfalls  Tippfehler 
  1258. auffinden.  Wie  oft  wird versehentlich ein '%'  vergessen  oder 
  1259. versehentlich die '5' gedrückt.
  1260.  
  1261.  
  1262. ə3.4.5 Unzulänglichkeiten
  1263.  
  1264.      In GFA-BASIC gelten lokale Variablen nicht nur in derjenigen 
  1265. Procedure als lokal, in der sie definiert werden, sondern auch in 
  1266. allen  von dieser Procedure aufgerufenen Proceduren. Es mag  zwar 
  1267. kein  guter  Programmierstil sein,  solche  Variablen  nicht  als 
  1268. Übergabe-Variablen  weiterzugeben,   es  ist  aber  in  GFA-BASIC 
  1269. erlaubt. Bei den Weller-TOOLS für GFA-BASIC wird aber eine lokale 
  1270. Variable nur innerhalb derjenigen Procedure als lokal  angesehen, 
  1271. in der sie definiert wird.
  1272.  
  1273.      VAR-Variablen  werden wie lokale Variablen  gehandhabt,  sie 
  1274. verändern  aber den Wert globaler Variablen.  Die  X-REF-Funktion 
  1275. ist nicht so intelligent, Pointer-Operationen (Call by Reference, 
  1276. was  die VAR-Funktion darstellt) zu verfolgen.  Das gleiche  gilt 
  1277. für den *-Pointer-Operator.
  1278.  
  1279.      X-REF erzeugen: Bei Speicherknappheit (ca. 45 kB) während X-
  1280. REF  erzeugen kann das Programm abstürzen.  Dieser  Fehler  wurde 
  1281. erst  einmal beobachtet).  Bei einem ST mit einem 1  MB  Speicher 
  1282. sollten LST-Programme bis etwa 400 kB analysiert werden können.
  1283.  
  1284.      X-REF  ausgeben:  Real-Zahlen mit Exponent werden  als  zwei 
  1285. Variablen gedeutet (2.9E-9 -> 2.9E und 09.)
  1286.  
  1287.  
  1288. ə3.4.6 Speicherbedarf der X-REF-Funktion
  1289.  
  1290.      Im  Protokoll  werden die  maximale  Anzahl  Variablen,  die 
  1291. WT_GFA lesen kann,  angezeigt.  Beim Starten von X-REF wird diese 
  1292. Zahl  in Abhängigkeit vom freien Speicher folgendermaßen  berech-
  1293. net:
  1294.  
  1295.      ' Maximale Anzahl verschiedener Variablen pro Variablentyp:
  1296.      var_nam_max%=MIN(FRE(0)\1000,5460)
  1297.  
  1298.      ' Maximale Anzahl lokaler Variablen pro Procedure/Function:
  1299.      lok_var_max%=MIN(255,var_nam_max%\10,65536\var_nam_max%)
  1300.                           ^^^^^^^^^^^^^^^
  1301.  
  1302.      Diese  Verteilung geht demzufolge davon aus,  daß  insgesamt 
  1303. etwa zehnmal soviele Variablen pro Variablentyp definiert werden, 
  1304. als  maximal  lokale Variablen (alle Typen)  in  einer  Procedure 
  1305. definiert  werden.  Bei  einem Programmierstil,  der  sehr  viele 
  1306. lokale Variablen (z.B.  > 35) pro Procedure verwendet,  wird  der 
  1307. Speicher in WT_GFA nicht effizient aufgeteilt.
  1308.  
  1309.  
  1310.      Um  Abhilfe  zu  ermöglichen,   kann  das  o.g.   Verhältnis 
  1311. gepatched werden.  Dazu muß mit einem Diskettenmonitor die Stelle 
  1312. " LOKVAR=10 "  (ziemlich  am Ende  von  WT_GFA.PRG)  entsprechend 
  1313. verändert  werden.  Zulässig  sind Werte  von  " LOKVAR=01 "  bis 
  1314. " LOKVAR=99 ".
  1315.  
  1316.  
  1317.  
  1318. ə3.5 OUTLINE
  1319.  
  1320.  
  1321. ə3.5.1 Funktionsweise von OUTLINE
  1322.  
  1323.      Die steuerbare Outline-Funktion hilft bei der Strukturierung 
  1324. von  Programmen,  indem  sie  einen  gezielten  Einblick  in  die 
  1325. Hierarchie  von  Proceduren,  die Verwendung  von  BASIC-Befehlen 
  1326. sowie die Veränderung von Variablen gibt.
  1327.  
  1328.      In einer Schlüsselwort-Liste werden dazu die  Schlüsselworte 
  1329. (oder auch nur Fragmente davon) eingetragen, nach deren Vorkommen 
  1330. im Programm gesucht wird.  In der Outline-Liste werden dann  alle 
  1331. Proceduren mit den entsprechenden (eingerückten) Zeilen  ausgege-
  1332. ben.  Darin  kann dann z.B.  die falsche Verwendung von  RESERVE, 
  1333. GEMDOS(),HIMEM, FRE(0) usw. erkannt werden.
  1334.  
  1335.      Die  Outline-Funktion kann Fehler nicht (im Gegensatz zu  X-
  1336. REF) von sich aus und automatisch finden.  Durch die  Darstellung 
  1337. eines  extrem  reduzierten Teils des Programmes wird  jedoch  die 
  1338. Fehlersuche und die Optimierung enorm unterstützt.
  1339.  
  1340.      Im  folgenden  sind ein paar Listen  aufgeführt,  mit  denen 
  1341. besonders  effektiv  nach Fehlern gesucht werden  kann  (Achtung: 
  1342. Leerzeichen gelten wie ein normales Zeichen):
  1343.  
  1344. OPEN,  CLOSE , PRN:, CON:, NAME, LOF(, SEEK, BLOAD, BSAVE, CHAIN, 
  1345. CHDIR,  CHDRIVE,  DIR,  DFREE,  FILES,  LOAD, LIST, MKDIR, RMDIR, 
  1346. SAVE, EOF, LOC, FIELD, GET, PUT, WRITE, 
  1347.  
  1348. FOR, NEXT, WHILE, WEND, REPEAT, UNTIL, DO, LOOP, EXIT IF
  1349.  
  1350.      Es  können natürlich auch Variablennamen  angegeben  werden. 
  1351. Damit  kann  z.B.  alle  Zeilen angezeigt  werden,  in  der  eine 
  1352. Variable definiert, verändert oder verwendet wird.
  1353.  
  1354.      Die Liste läßt sich mit 'Hinzufügen' und 'Entfernen'  leicht 
  1355. erzeugen bzw. verändern, oder mit 'Speichern' und 'Laden' auf ein 
  1356. Laufwerk schreiben bzw. von dort einlesen.
  1357.  
  1358.      Standardmäßig werden die Schlüsselbegriffe nicht in  Kommen-
  1359. taren  und Zeichenketten gesucht.  Wird dies gewünscht,  kann  es 
  1360. unter 'Berücksichtigen' angegeben werden.
  1361.  
  1362.  
  1363. Beispiel einer Outline-Datei
  1364.  
  1365.      In  dem folgenden Beispiel soll untersucht  werden,  ob  die 
  1366. Behandlung  verschiedener Ein-/Ausgabe-Kanäle  'sauber'  program-
  1367. miert sind. Es darf z.B. nicht vorkommen, daß eine Datei geöffnet 
  1368. werden soll,  die bereits offen ist. Die folgende Datei wurde mit 
  1369. der Outline-Funktion erzeugt,  nachdem der Runtime-Fehler  'Datei 
  1370. bereits geöffnet' auftrat.
  1371.  
  1372. Datei: E:\WT_GFA\WT_107.LST 89529 Byte
  1373. Schlüsselwörter:
  1374. OPEN 
  1375. CLOSE 
  1376. PRN:
  1377. -----------------------------------------------------------------
  1378. PROCEDURE e_pars
  1379.   OPEN "I",#1,e_file$
  1380.   CLOSE #1
  1381. PROCEDURE f_copy
  1382.         OPEN "I",#1,f_copy_source$
  1383.         OPEN "O",#2,f_copy_target$
  1384.         CLOSE #1
  1385.         CLOSE #2
  1386. PROCEDURE exe_edit
  1387.   IF a_file$<>"" AND a_file$<>"PRN:"
  1388. PROCEDURE xref_out
  1389.           OPEN "O",#2,a_file$
  1390.             CLOSE #2
  1391. PROCEDURE ol
  1392.           OPEN "O",#2,a_file$
  1393.           CLOSE #2
  1394. PROCEDURE ol_load
  1395.     OPEN "I",#1,ol_file$
  1396.     CLOSE #1
  1397. PROCEDURE ol_save
  1398.     OPEN "O",#2,ol_file$
  1399.     CLOSE #2
  1400. PROCEDURE out_init
  1401.     a_file$="PRN:"
  1402. PROCEDURE init_exe
  1403.     OPEN "I",#1,akt_lw$+":"+akt_pfad$+"WT_GFA.INF"
  1404.     CLOSE #1
  1405. PROCEDURE i_allg
  1406.       OPEN "O",#2,a_file$
  1407.       CLOSE #2
  1408.  
  1409.      In der etwa 100 Zeilen umfassenden,  ziemlich langen  Proce-
  1410. dure 'xref_out',  hat sich ein Fehler eingeschlichen: Es wird ein 
  1411. Ausgabekanal geöffnet und später wieder geschlossen.  Das 'CLOSE' 
  1412. ist  jedoch weiter eingerückt,  so daß hier möglicherweise  etwas 
  1413. nicht  stimmt.  Falls zwischendurch 'IF-ENDIF'-Strukte  verwendet 
  1414. werden,  kann es sein, daß das 'CLOSE' falsch positioniert wurde. 
  1415. Besonders  bei  stark verschachtelten  Programmteilen  kann  dies 
  1416. leicht geschehen.  Es empfiehlt sich also, diesen Programmteil im 
  1417. Interpreter noch einmal genauer anzusehen.
  1418.  
  1419. Die anderen OPEN-CLOSE-Kombinationen sind gleich weit eingerückt, 
  1420. so daß hier (wahrscheinlich) keine Fehler vorliegen.
  1421.  
  1422.  
  1423. ə3.5.2 Start
  1424.  
  1425. Damit wird der Outline-Prozeß gestartet.
  1426.  
  1427.  
  1428. ə3.5.3 Schlüsselwörter hinzufügen
  1429.  
  1430.      Damit  können neue Schlüsselwörter in die Liste  hinzugefügt 
  1431. werden. Dazu müssen die Schlüsselwörter, durch <Return> getrennt, 
  1432. nacheinander  eingegeben  werden.  Eine Leereingabe  beendet  das 
  1433. Hinzufügen.
  1434.  
  1435.  
  1436. ə3.5.4 Schlüsselwörter entfernen
  1437.  
  1438.      Damit können Schlüsselwörter aus der Liste entfernt  werden. 
  1439. Es  erscheint  die Liste mit Nummern,  die  den  Schlüsselwörtern 
  1440. zugeordnet sind.  Durch Eingabe der Nummer wird das entsprechende 
  1441. Schlüsselwort gelöscht.
  1442.  
  1443.  
  1444. ə3.5.5 Schlüsselwörter laden
  1445.  
  1446.      Damit  kann eine Liste mit Schlüsselwörtern geladen  werden. 
  1447. Falls  ein Ordner "KEY" vorhanden ist,  wird die  Dateiauswahlbox 
  1448. automatisch auf dieses Verzeichnis eingestellt.
  1449.  
  1450.  
  1451. ə3.5.6 Schlüsselwörter speichern
  1452.  
  1453. Damit wird die Liste mit Schlüsselwörtern als ASCII-Datei gespei-
  1454. chert.
  1455.  
  1456.  
  1457. ə3.5.7 Kommentare berücksichtigen
  1458.  
  1459. Normalerweise bleiben Kommentare unberücksichtigt.  Z.B. wird die 
  1460. Zeile
  1461.  
  1462. PRINT sys_frei%        ! PRINT FRE(0)
  1463.  
  1464. nicht ausgegeben, auch wenn 'FRE(0)' ein Schlüsselwort ist. Wenn 
  1465. 'Kommentare  berücksichtigen'  angewählt ist,  wird  diese  Zeile 
  1466. ausgegeben.
  1467.  
  1468.  
  1469. ə3.5.8 Zeichenketten berücksichtigen
  1470.  
  1471. Normalerweise  bleibt der Inhalt von Zeichenketten  unberücksich- 
  1472. tigt. Z.B. wird die Zeile
  1473.  
  1474. PRINT "HOW TO GET STARTED"
  1475.  
  1476. nicht ausgegeben,  auch wenn 'GET' ein Schlüsselwort  ist.  Wenn 
  1477. 'Zeichenketten berücksichtigen' angewählt ist,  wird diese  Zeile 
  1478. ausgegeben.
  1479.  
  1480.  
  1481. ə3.5.9 Proceduren klappen
  1482.  
  1483.      Im  Editor der Version 3 des GFA-BASIC-Interpreters gibt  es 
  1484. bereits  die Funktion 'Procedure klappen'.  Die hier  realisierte 
  1485. Funktion  ist  ähnlich,  zeigt aber wahlweise zusätzlich  zu  den 
  1486. Procedure-Definitionen  auch die Procedure-Aufrufe und  Programm-
  1487. Module an.
  1488.  
  1489. Beispiel: Auszüge aus einer 'geklappten' LST-Datei
  1490.  
  1491. Datei: E:\WT_GFA\WT_107.LST Datei: E:\WT_GFA\WT_107.LST 89529 Byte
  1492. ------------------------------------------------------------
  1493. ' MODUL Hauptprogramm
  1494. @init_all
  1495. @menu_set
  1496. PROCEDURE pd
  1497.   @mount_info("")
  1498.   @menu_set
  1499. ------------------------------------------------------------
  1500. ' MODUL Datei
  1501. PROCEDURE e_select
  1502.       @e_pars
  1503.         @e_statistics
  1504. PROCEDURE e_pars
  1505. PROCEDURE e_statistics
  1506.     @line_input
  1507.  
  1508. ...
  1509.  
  1510. ------------------------------------------------------------
  1511. ' MODUL Printer
  1512. PROCEDURE print_listing
  1513.     @mount_info("Listing Drucken (Abbruch mit ESC)")
  1514.     @out_init
  1515.         @prt_init
  1516.           @kopf
  1517.         @line_input
  1518.         IF LEFT$(zeile$,4)="PROC"
  1519.           IF LEFT$(zeile$,7)="' MODUL"
  1520.             modul$=MID$(zeile$,INSTR(zeile$,"MODUL"))
  1521.             @fuss
  1522.             @kopf
  1523.               @fuss
  1524.               @kopf
  1525.         @print_line
  1526.           @fuss
  1527.     @no_e_file
  1528. PROCEDURE print_line
  1529. PROCEDURE kopf
  1530. PROCEDURE fuss
  1531. PROCEDURE prt_par
  1532. PROCEDURE prt_test
  1533.   @prt_init
  1534. PROCEDURE out_init
  1535.       @a_select
  1536. PROCEDURE prt_init
  1537.  
  1538.  
  1539. ə3.5.10 Proceduren auflisten
  1540.  
  1541. Damit werden nur die Procedure-Namen aufgelistet.
  1542.  
  1543.  
  1544. ə3.5.11 Module auflisten
  1545.  
  1546. Damit  werden  die  Zeilen,  in denen  Module  definiert  werden, 
  1547. aufgelistet.  Module sind nicht von GFA-BASIC vorgesehen, sondern 
  1548. eine  spezielle  Erweiterung der Syntax in den  Weller-TOOLS  für 
  1549. GFA-BASIC (s.a.  Kap.  3.6.1). Module werden durch Kommentare der 
  1550. folgenden Form definiert:
  1551.  
  1552. ' MODUL modulname
  1553.  
  1554.  
  1555. ə3.5.12 1-zeilige Funktionen auflisten
  1556.  
  1557. Damit werden nur die 1-zeiligen Funktionsnamen aufgelistet.
  1558.  
  1559.  
  1560. ə3.5.13 Mehrzeilige Funktionen auflisten
  1561.  
  1562. Damit werden nur mehrzeilige Funktionsnamen aufgelistet.
  1563.  
  1564.  
  1565. ə3.5.14 Lokale Variablen auflisten
  1566.  
  1567. Damit werden nur die lokalen Variablen aufgelistet.  Diese werden 
  1568. allerdings  nur erkannt,  wenn die zwei Leerzeichen  vor  'LOCAL' 
  1569. auch  vorhanden  sind (also nicht durch den  REM-Killer  entfernt 
  1570. wurden).
  1571.  
  1572.  
  1573.  
  1574. ə3.6 DIVERSES
  1575.  
  1576.  
  1577. ə3.6.1 Listing-Druck-Funktion
  1578.  
  1579.      Die  Listing-Druck-Funktion unterstützt die  Verwendung  von 
  1580. Programm-Modulen  und die Verwendung von Namen nach einem  'quasi-
  1581. ungarischen'  Code.  Drucker  mit breiter  Papierwalze  (15  Zoll)
  1582.  
  1583. werden unterstützt.  Eine ordentliche und präzise Formatierung der
  1584.  
  1585. Seiten  ist selbstverständlich.  Die Seitenparameter  können  frei
  1586.  
  1587. eingestellt werden.
  1588.  
  1589.      Wichtig:  Die  Wahl des Ausgabegeräts und 'Datei' gilt  auch 
  1590. für die Listing-Druck-Funktion.  Wenn also auf Drucker ausgegeben 
  1591. werden soll, muß 'Drucker' als Ausgabegerät angewählt sein!
  1592.  
  1593.      Die  Option 'Drucken in Datei' ist kann besonders  hilfreich 
  1594. sein  beim  Drucken des Listing.  Wer seine  Privat-Listings  mit 
  1595. einigen  hundert  Seiten im Betrieb oder in der  Universität  (am 
  1596. besten  auf  einem Seiten- oder  einem  Laserdrucker)  ausdrucken 
  1597. möchte,  dort  aber kein Atari ST steht,  kann mit einem  MS-DOS- 
  1598. oder  VMS-Computer  über  den 'Copy  file.prn  >PRN:'-Befehl  das 
  1599. Listing auf dem dort zur Verfügung stehenden Drucker ausgeben. Es 
  1600. muß  lediglich  ein mechanisch passendes Laufwerk  zur  Verfügung 
  1601. stehen,  da das Diskettenformat des Atari ST nicht wesentlich von 
  1602. dem anderer Computer abweicht.
  1603.  
  1604.  
  1605.  
  1606. ə3.6.2 Listing numerieren
  1607.  
  1608.      Damit  wird ein Listing numeriert.  Die Formatierung  orien-
  1609. tiert sich automatisch an der höchsten Zeilennummer,  damit nicht 
  1610. zuviele linke Leerzeichen gesetzt werden.
  1611.  
  1612.  
  1613. ə3.6.3 Zeilenoffset
  1614.  
  1615.      Damit wird eingestellt,  welche Nummer die erste Zeile haben 
  1616. soll.  Im  V3-Interpreter hat die erste Zeile die  Nummer  0,  in 
  1617. Tempus und 1st Word Plus die Nummer 1. Voreingestellt ist 0.
  1618.  
  1619.  
  1620. ə3.6.4 Kommentare löschen
  1621.  
  1622.      Mit  dieser  Funktion sind wir bei der  Sparte  'REM-Killer' 
  1623. angekommen, womit auch schon fast alles gesagt wäre. Außer:
  1624.  
  1625.      Wahlweise  können auch die links stehenden Leerzeichen  ent-
  1626. fernt  werden.  Die Länge der erzeugten NOR-Datei  ('NO R'emarks) 
  1627. entspricht dann etwa der Anzahl Zeichen, die man zum Abtippen des 
  1628. Listings eingeben muß.
  1629.  
  1630.      Außerdem können wahlweise Kommentarzeilen, also REM- oder '-
  1631. Zeilen,  durch  ein '-Zeichen ersetzt werden,  damit  die  Anzahl 
  1632. Zeilen insgesamt nicht verändert wird.
  1633.  
  1634.      Durch  diese erweiterten Möglichkeiten des  REM-Killer,  vor 
  1635. allem  der entfernung links stehender  Leerzeichen,  können  LST-
  1636. Programme oft auf die Hälfte der Dateigröße reduziert werden. Für 
  1637. den GFA-BASIC-Interpreter ergeben sich dadurch keinerlei Inkompa-
  1638. tibilitäten beim 'Mergen'.
  1639.  
  1640.  
  1641. ə3.6.5 Statistik
  1642.  
  1643.      Hinter dieser Funktion befindet sich derzeit nur ein  einfa-
  1644. cher,  aber  sehr schneller Zähler,  der etwa 500 kB pro  Sekunde 
  1645. durchforstet.  Diese  Assemble-Routine stammt,  wie auch  weitere 
  1646. Programmteile in den Weller-TOOLS für GFA-BASIC, vom Programmier-
  1647. Kollegen Henrik Alt, Autor des Virenkillers Sagrotan.
  1648.  
  1649. Damit wird z.B. folgende Statistik erzeugt:
  1650.  
  1651.             Datei: E:\WT_GFA\WT_110.LST
  1652.             Größe: 101094 Byte
  1653.     Anzahl Zeilen: 3256
  1654. Anzahl Proceduren: 111
  1655.                  .. Näherung
  1656.  
  1657.      Wie  kann man so schnell aus einer LST-Datei die Anzahl  der 
  1658. Proceduren ermitteln?  Ganz einfach:  Man sucht die erste  Proce-
  1659. dur,  und zählt dann alle Vorkommnisse des Musters $0A $50. Damit 
  1660. werden  alle  großen  'P's gezählt,  die am  Anfang  einer  Zeile 
  1661. stehen. Und die gibt es bekanntlich nur bei 'PROCEDURE'.
  1662.  
  1663.       Anzahl eingerückter Zeilen: 2701
  1664. Anzahl nicht eingerückter Zeilen: 555
  1665.  Länge des Programmes ohne Procs: 333
  1666.        Anzahl von 'C:' (C-Calls): 12
  1667.    Anzahl von '##' (z.B. USINGS): 36
  1668.   Anzahl von '(#' (z.B. Kanäle): 9
  1669.    Anzahl von '()' (z.B. ERASE): 47
  1670. Häufigkeit einiger Zeichen mit besonderer Bedeutung:
  1671.    32 $20   24352    Die Aussagekraft dieser Zahlen hält sich in
  1672. !  33 $21     567    Grenzen.
  1673. "  34 $22    1917
  1674. #  35 $23     186
  1675. $  36 $24    1440
  1676. %  37 $25    1317
  1677. ...
  1678. =  61 $3D     808
  1679. @  64 $40     270
  1680. \  92 $5C      33
  1681.  
  1682.  
  1683.  
  1684. ə3.6.6 Datamake
  1685.  
  1686.      Dieses  Luxus-Datamake erzeugt aus beliebigen Dateien  nicht 
  1687. nur  die DATA-Zeilen,  sondern auch gleich die  zugehörige  Lese-
  1688. schleife mitsamt Prüfsumme.
  1689.  
  1690.      Beim DATA-Format kann gewählt werden, ob in einer DATA-Zeile 
  1691. 8 oder 16 Werte stehen sollen,  und ob führende Nullen der  Über-
  1692. sichtlichkeit wegen beibehalten werden sollen.
  1693.  
  1694.      Die  Prüfsumme cs% wird eigentlich nur dann  benötigt,  wenn 
  1695. das  Programm als Listing veröffentlicht  werden  soll.  Datamake 
  1696. selbst macht natürlich keine Fehler.
  1697.  
  1698.      In  den DATA's befinden sich  z.B.  Maschinenprogramme  oder 
  1699. Bilder. Auf Einzelheiten der Verwendung der erzeugten Zeichenket-
  1700. ten soll hier nicht eingegangen werden.
  1701.  
  1702.  
  1703. Beispiel: ein Bild im Bit Image-File-Format, IMG-Bild:
  1704.  
  1705. SNAPSHOT.IMG:
  1706. '
  1707. DATA 1,8,1,2,174,174,60,C
  1708. DATA 800C,C67E,6060,7EF8,7E,0,3800,800C
  1709. DATA C67E,6060,7EFC,7E,0,3800,800C,C660
  1710. DATA 6060,60CC,18,0,1800,800C,C660,6060
  1711. DATA 60CC,18,3C3C,183E,800C,C67C,6060,7CCC
  1712. DATA 7E18,7E7E,187E,800C,D67C,6060,7CFC,7E18
  1713. DATA 6666,1860,800C,D660,6060,60F8,18,6666
  1714. DATA 1870,800C,FE60,6060,60D8,18,6666,183C
  1715. DATA 800C,FE60,6060,60CC,18,6666,180E,800C
  1716. DATA EE60,6060,60CC,18,6666,1806,800C,C67E
  1717. DATA 7E7E,7EC6,18,7E7E,3C7E,800C,827E,7E7E
  1718. DATA 7EC6,18,3C3C,3C7C
  1719. '
  1720. RESTORE SNAPSHOT.IMG
  1721. SNAPSHOT.IMG$=SPACE$(184)
  1722. cs%=0
  1723. FOR i%=0 TO 182 STEP 2
  1724.   READ wort$
  1725.   wort%=VAL("&H"+wort$)
  1726.   ADD cs%,wort%
  1727.   cs%=cs% AND &HFFFF
  1728.   DPOKE VARPTR(SNAPSHOT.IMG$)+i%,wort%
  1729. NEXT i%
  1730. IF cs%<>56920
  1731.   PRINT "Fehler in DATA's bei SNAPSHOT.IMG"
  1732.   VOID INP(2)
  1733.   EDIT
  1734. ENDIF
  1735.  
  1736.  
  1737. ə3.6.7 Speicher freigeben
  1738.  
  1739.      Diese  Funktion löscht einige interne Variablen und  Felder, 
  1740. so daß Programmen,  die aus der Programmschale aufgerufen werden, 
  1741. mehr Speicher zur Verfügung steht.
  1742.  
  1743.      Am meisten Speicherplatz benötigen die Felder,  die  während 
  1744. der  Erzeugung einer Cross-Reference-Liste dimensioniert  werden. 
  1745. Das  ist  u.a.  daran  zu erkennen,  daß  der  in  der  Infozeile 
  1746. angezeigte  freie Speicherplatz beim Starten von X-REF  drastisch 
  1747. schrumpft.   Falls  ein  Bild  WT_GFA.PIC  und  die   Hilfe-Datei 
  1748. WT_GFA.HLP geladen wurden,  werden sie mit dieser Funktion  eben-
  1749. falls gelöscht.
  1750.  
  1751.  
  1752.  
  1753. ə3.7 HILFE
  1754.  
  1755.  
  1756. ə3.7.1 Extrahilfe
  1757.  
  1758.      Wenn die Extrahilfe eingeschaltet ist,  erscheint bei  jedem 
  1759. Anklicken  eines  Menüeintrages eine Alert-Box mit  einer  kurzen 
  1760. Erläuterung der angewählten Funktion.
  1761.  
  1762.  
  1763. ə3.7.2 Inhaltsverzeichis
  1764.  
  1765.      Zeigt  das  Inhaltsverzeichnis der Hilfstexte  in  Form  von 
  1766. Kapitelnummern an.
  1767.  
  1768.  
  1769. ə3.7.3 Kapitel zeigen
  1770.  
  1771.      Mit  dieser  Hilfe-Funktion  können Sie  sich  Teile  dieses 
  1772. Handbuches auf den Bildschirm einblenden lassen.
  1773.  
  1774.      Dafür  muß  sich allerdings die Datei WT_GFA.HLP  beim  Pro-
  1775. grammstart  dort befinden,  wo sich auch das  Programm  befindet. 
  1776. Diese Datei ist eine um spezielle Zeichen erweiterte  ASCII-Datei 
  1777. (s.  Kapitel 5.2.3) und wird vollständig in den Speicher geladen. 
  1778. Mit  'Speicher freigeben' wird diese Hilfsdatei aus dem  Speicher 
  1779. gelöscht.
  1780.  
  1781.  
  1782.  
  1783.  
  1784. ə4. DAS VERTRIEBSKONZEPT DER WELLER-TOOLS FÜR GFA-BASIC
  1785.  
  1786.      Die  Weller-TOOLS für GFA-BASIC  gibt es  in  einer  Public-
  1787. Domain-Version und in einer Profi-Version. Bei der Public-Domain-
  1788. Version  gibt es nur eine einzige Einschränkung:  Die  Größe  der 
  1789. bearbeitbaren LST-Programme beträgt maximal 100 kB.  Dagegen sind 
  1790. alle  Funktionen  integriert,  und  natürlich  können  auch  alle 
  1791. Ergebnisse  ausgedruckt oder abgespeichert werden.  Damit  können 
  1792. selbst  größere Programme optimiert oder untersucht  werden.  Für 
  1793. Profis, die noch größere Programme schreiben, dürften die DM 79,-
  1794. -  für  eine  Version  ohne  100 kB-Beschränkung  kein  Hindernis 
  1795. darstellen.
  1796.  
  1797.      Da die Erträge bei Public-Domain-Programmen sich in  Grenzen 
  1798. halten  (wenn  es  gut läuft,  kann man  sich  davon  gerade  die 
  1799. Festplatte finanzieren,  die man eigentlich nur wegen der Erstel-
  1800. lung gerade jenes Public-Domain-Programmes gekauft  hat),  möchte 
  1801. der  Autor  nicht  auf  die diese  Zweigleisigkeit  mit  der  kB-
  1802. Beschränkung verzichten.
  1803.  
  1804.      Die  Profi-Version  kostet  DM 79,--  inkl.  14%  MwSt  plus 
  1805. Versandkosten.  Diese betragen DM 5,-- bei Vorkasse (Überweisung, 
  1806. V-Scheck,  Bar  oder Postanweisung),  DM 8,-- bei Nachnahme  (nur 
  1807. Inland)  bzw.  DM 10,-- bei Auslandsbestellungen (nur  Vorkasse). 
  1808. Updates  der Public-Domain-Version kosten DM 10,-- plus  Versand-
  1809. kosten.  Die Lieferungen erfolgt mit einer Quittung mit ausgewie-
  1810. sener MwSt.  Bei Ländern aus Ostblockstaaten (da kommen  tatsäch-
  1811. lich  Bestellungen her!) muß man sich vorläufig irgendwie  anders 
  1812. arrangieren (Kompensationsgeschäfte).
  1813.  
  1814. -    Kto.  1820 001, Raiffeisenbank Rot-Kocher eG in Fichtenberg, 
  1815.      Blz 600 694 70
  1816. -    Kto. 296325-709, Postgiroamt Stuttgart, Blz 600 100 70
  1817.  
  1818.      Es  ist damit zu rechnen,  daß die ersten  Programmversionen 
  1819. ab V 3.02 nach kurzer Zeit aufgrund der Anwender-Reports  verbes-
  1820. sert  werden (wie beim GFA-Interpreter  und  -Compiler).  Deshalb 
  1821. gibt  es für die Public-Domain- und die  Profi-Versionen  Updates 
  1822. für DM 10,--.  Diese Updates können schon im voraus,  quasi  'auf 
  1823. Abruf',  vorbestellt werden.  Bei Fertigstellung werden sie  dann 
  1824. automatisch  zugesandt.  Die Einsendung eines  'Anwender-Reports' 
  1825. ist natürlich unabhängig von einer Bestellung.
  1826.  
  1827.  
  1828. ə5. ANHANG
  1829.  
  1830.  
  1831.  
  1832. ə5.1 LIEFERUMFANG
  1833.  
  1834.       Folgende  Ordner und Dateien gehören zum  Lieferumfang  der 
  1835. Weller-TOOLS für GFA-BASIC und befinden sich im Ordner WT_GFA:
  1836.  
  1837. WT_GFA.PRG     Programmdatei Profi-Version.
  1838. und/oder
  1839. WT_GFAPD.PRG   Programmdatei  Public-Domain-Version  mit  100 kB-
  1840.                Beschränkung.
  1841.  
  1842. WT_GFA.INF     ASCII-Datei  mit  Pfadangaben für  feste  GFA-Pro-
  1843.                grammschale. Wird automatisch geladen.
  1844.  
  1845. WT_GFA.FSL     ASCII-Datei  mit  Pfadangaben  für  flexible  Pro-
  1846.                grammschale. Wird automatisch geladen.
  1847.  
  1848. WT_GFA.HLP     Hilfe-Datei, wird automatisch geladen.
  1849.  
  1850. WT_GFA.PIC     Bild-Datei, wird automatisch geladen.
  1851.  
  1852. README.TXT     Textdatei mit aktuellen Hinweisen.
  1853.  
  1854. WT_INFO        Ordner mit folgenden Ordnern und Dateien:
  1855.      WT_GFA.DOC     Handbuch  mit  64 Seiten  als  Textdatei  für 
  1856.                     1st Word Plus. Die Seitenformatierung ist auf 
  1857.                     Endlospapier  mit 12 Zoll Länge  eingestellt, 
  1858.                     kann aber auch mit automatischem Einzelblatt-
  1859.                     einzug ausgedruckt werden,  wenn der  Drucker 
  1860.                     66 Zeilen pro Einzelblatt-Seite drucken kann.
  1861.                     Seitenformat: 72 - 3 - 3 - 3 - 3 = 60.
  1862.  
  1863.      \IMAGES        Ordner mit 18 IMG-Bilddateien für WT_GFA.DOC:
  1864.                     HELLO_WT.IMG,  1040ST.IMG,    SCHEMA3.IMG, 
  1865.                     1040SMAL.IMG,  GFA_ETT.IMG,   WINDOW3.IMG, 
  1866.                     L_WT_GFA.IMG,  L_DATEI.IMG,   L_SHELL.IMG, 
  1867.                     L_FDEMO.IMG,   L_FWTGFA.IMG,  L_FSHELL.IMG, 
  1868.                     L_XREF.IMG,    L_OUTLIN.IMG,  L_DIVERS.IMG, 
  1869.                     L_INFOS.IMG,   WT_PD.IMG,     WT_S.IMG.
  1870.  
  1871.      WT_GFA.TXT     Handbuch als ASCII-Datei, unformatiert, maxi-
  1872.                     mal 60 beschriebene Zeilen pro Seite. Im Text 
  1873.                     ist  bereits ein linker Rand mit  8  Leerzei-
  1874.                     chen. ASCII-Text mit Formfeeds CHR$(12). Wird 
  1875.                     von jedem Textprogramm gelesen und von  jedem 
  1876.                     Drucker ausgedruckt.
  1877.  
  1878.      REPORT.TXT     Formular 'Anwender-Report' als ASCII-Datei
  1879.  
  1880.      \DISK_ETT      Ordner mit folgender Datei:
  1881.      WT_ETT.PRN     Diskettenetikett  für 9-Nadler zum   direkten 
  1882.                     Ausdrucken aus dem Desktop per   Doppelklick. 
  1883.                     Der Drucker muß eine  Auflösung  von  80  dpi 
  1884.                     horizontal und 1/72 Zoll vertikal haben.  Für 
  1885.                     24-Nadler FX-Emulator (FX_EMU.PRG) verwenden.
  1886.  
  1887. DEMO           Ordner mit informativen DEMO-Dateien (GFA V2):
  1888.      DEMO1.TXT      Cross-Reference-Liste
  1889.      DEMO2.TXT      Outline-Liste
  1890.      DEMO3.TXT      'Geklappte' Liste
  1891.      DEMO4.TXT      Data-Liste
  1892.  
  1893. KEY            Ordner  mit Beispieldateien  für  Schlüsselwörtern 
  1894.                für Outliner:
  1895.      KANAL.KEY      Diese ASCII-Dateien können auch mit jedem
  1896.      SPEICHER.KEY   beliebigen Texteditor geschrieben werden.
  1897.      STRUKTUR.KEY   Vorsicht bei Leerzeichen.
  1898.      DISK.KEY
  1899.      CASE_IF.KEY    Damit sieht man schnell,  welche IF - ELSE  - 
  1900.                     ENDIF - Strukte in SELECT - CASE -  ENDSELECT 
  1901.                     oder IF - ELSE IF - ENDIF umgewandelt  werden 
  1902.                     können.
  1903.  
  1904. WT_HD          Ordner mit Hilfsprogrammen, ideal bei Festplatten-
  1905.                betrieb:
  1906.      WT_SETUP.PRG   Komfortables Setup-Programm für Auto-Ordner.
  1907.      WT_FF.PRG      Find File-Utility.   Durchsucht  ganze  Fest-
  1908.                     platte oder Diskette.
  1909.      WT_FT.PRG      Find Text-Utility.   Durchsucht  ganze  Fest-
  1910.                     platte oder Diskette.
  1911.      WT_TREE.PRG    Zeigt die Verzeichnis-Struktur der Festplatte 
  1912.                     oder Diskette grafisch an.
  1913.      WT_DOUBL.PRG   Zeigt  Dateien,  die mehrfach auf  der  Fest-
  1914.                     platte oder auf einer Diskette sind, an.
  1915.      README.TXT     Kurzinfo für SETUP.PRG.
  1916.      MULTI.ACC      Multi-Funktions-Accessory  von  Henrik   Alt, 
  1917.                     ideal für Programmierer und Festplattenbesit-
  1918.                     zer: u.a. MS-DOS-Betrieb von Laufwerk A: oder 
  1919.                     B:  mit wahlweiser MS-DOS-Formatierung 360 kB 
  1920.                     oder 720 kB,  Druckeranpassung für Epson- und 
  1921.                     IBM-Drucker (ersetzt z.B. PTESPON.PRG), Maus-
  1922.                     beschleuniger,   Software-Schreibschutz   für 
  1923.                     beliebige Partitionen der Festplatte und  für 
  1924.                     Diskettenlaufwerke,  Kaltstart, Warmstart und 
  1925.                     Parkoption für Festplatte.
  1926.  
  1927. Kleinere Änderungen möglich, siehe dazu Datei README.TXT.
  1928.  
  1929.  
  1930.  
  1931. ə5.2 DATEIFORMATE
  1932.  
  1933.  
  1934. ə5.2.1 WT_GFA.INF
  1935.  
  1936.      Diese Datei hat ASCII-Format und kann  (in einem Texteditor) 
  1937. mit  Kommentaren  hinter  dem  *-Zeichen  versehen  werden.   Der 
  1938. Dateiaufbau ist vorgeschrieben, d.h. daβ die Informationen in den 
  1939. gleichen Zeilen bleiben müssen.
  1940.  
  1941.      Falls  die  Datei bei Programmstart  fehlt,  werden  interne 
  1942. Standardwerte gesetzt. Diese entsprechen folgender INF-Datei:
  1943.  
  1944. A:\MENUX.PRG        * In dieser Datei stehen Pfadangaben und
  1945. A:\GFABASIC.PRG     * Dateinamen für die feste Programm-
  1946. A:\GFABASIC.PRG     * schale ab V3.01. Reihenfolge: Menux,
  1947. A:\GFA_BCOM.PRG     * Interpreter V3, Interpreter V2, Compi-
  1948. A:\TEMPUS.PRG       * ler V2, Editor (z.B. Tempus ab V1.10)
  1949.  
  1950.  
  1951. ə5.2.2 WT_GFA.PIC
  1952.  
  1953.      Diese  Datei  beinhaltet ein Bild  im  Screen-Format  (32000 
  1954. Byte)  in  beliebiger Auflösung.  Mitgeliefert wird ein  Bild  in 
  1955. hoher Auflösung.
  1956.  
  1957.      Das Bild wird unmittelbar nach Programmstart angezeigt,  und 
  1958. auch wenn im DESK-Menü Info angewählt wird.
  1959.  
  1960.      Diese Datei wird automatisch beim Programmstart geladen.  Um 
  1961. Zeit  und  Speicher  zu  sparen,  kann  sie  auch  gelöscht  oder 
  1962. umbenannt  werden.  Mit einem Malprogramm können auch  statt  dem 
  1963. mitgelieferten Bild auch ein eigenes Bild geladen werden.
  1964.  
  1965.      Der 32 kB große Speicher,  den diese Datei belegt,  kann mit 
  1966. 'Speicher freigeben' freigegeben werden.
  1967.  
  1968.  
  1969. ə5.2.3 WT_GFA.HLP
  1970.  
  1971.      Diese Datei enthält die Hilfstexte,  die im wesentlichen mit 
  1972. dem  Handbuch übereinstimmen.  Sie besteht aus  ASCII-Zeichen  ab 
  1973. CHR$(32).  Damit im Programm kein zusätzliches Index-Feld für die 
  1974. Kapitel benötigt wird, werden Kapitelüberschriften zusätzlich mit 
  1975. CHR$(26) gekennzeichnet.  Die Datei kann z.B.  mit dem Texteditor 
  1976. Tempus geändert werden, nicht jedoch mit 1st Word Plus.
  1977.  
  1978.      Der etwa 107 kB große Speicher, den diese Datei belegt, kann 
  1979. mit 'Speicher freigeben' freigegeben werden.
  1980.  
  1981.  
  1982. ə5.2.4 WT_GFA.FSL
  1983.  
  1984.      Diese  Datei  enthält die Definitionen  der  flexiblen  Pro-
  1985. grammschale.  Sie  ist kompatibel zu einer früheren  Version  der 
  1986. flexiblen  Programmschale 'Flesh'.  Die erste Zeile enthält  eine 
  1987. Kennung "FSL".  In der zweiten Zeile steht, wieviele eigene Menüs 
  1988. herunterklappen  können.  Dann folgen jeweils die Titel  mit  der 
  1989. Anzahl  Einträgen für diesen Titel,  dann jeweils  die  einzelnen 
  1990. Einträge:  Zuerst die Bezeichnung in der Programmschale, dann die 
  1991. Datei  komplett  mit Pfad,  und  schließlich  ein  Kommandostring 
  1992. (meistens leer).  Es dürfen max.  100 Programme angegeben werden, 
  1993. wobei dem GEM bei langen Pfadangaben schon vorher der Puffer (für 
  1994. die Menüleiste) zu klein wird.
  1995.  
  1996. "WT_GFA.FSL"
  1997. 5
  1998. "Text+Graf.",13
  1999. " 1st Word Plus V3.15","C:\WP3\WORDPLUS.PRG",""
  2000. " 1st XTRA V1.02","D:\WP_ADI\1ST_XTRA.PRG",""
  2001. " Tempus V2.05 ","D:\WP_ADI\TEMPUS.PRG",""
  2002. "---------------------","",""
  2003. " Signum 2 ","D:\SIGNUM\SIGNUM2.PRG",""
  2004. " Install ","D:\SIGNUM\INSTAL.PRG",""
  2005. " Print 9 ","D:\SIGNUM\SPRINT9.PRG",""
  2006. " Print 24 ","D:\SIGNUM\SPRINT.PRG",""
  2007. " DCS 9 ","F:\P9\DCS9N.PRG",""
  2008. " DCS 24 ","F:\P24\DCS24N.PRG",""
  2009. "---------------------","",""
  2010. " Public Painter V0.47","F:\PPM\PPM.PRG",""
  2011. " Picture Converter","F:\PPM\PCONVERT\PCONVERT.PRG",""
  2012. "Datei/Calc",5
  2013. " Adimens Exec V2.3 ","D:\WP_ADI\EXEC.PRG",""
  2014. " Adi Talk V2.3","D:\WP_ADI\UTILS\ADITALK.TTP","FAKTURA.TLP"
  2015. " Init V2.3","D:\WP_ADI\UTILS\INIT.PRG",""
  2016. " Reorg ","D:\ADI\UTILS\REORG.TTP",""
  2017. " EZ Calc ","F:\CALC\EZCALC.PRG",""
  2018. "GFA-Basic ",6
  2019. " Interpreter 2.02","E:\GFABASIC.PRG",""
  2020. " Compiler 2.02","E:\GFA_BCOM.PRG",""
  2021. " Interpreter 3.07","E:\GFA3\GFABASIC.PRG",""
  2022. " Menu X ","E:\GFA3\MENUX.PRG",""
  2023. " RCS 2.1 ","E:\UTILS\RSC\RCS2.PRG",""
  2024. " WT-GFA 3.02 ","E:\WT_GFA\WT_GFA.PRG",""
  2025. "Utilities",8
  2026. " WT_FF: Find File 1.04","C:\DISKUTIL\WT_FF.PRG",""
  2027. " WT_FT: Find Text 1.03","C:\DISKUTIL\WT_FT.PRG",""
  2028. " WT_DOUBL: Find Doubles ","C:\DISKUTIL\WT_DOUBL.PRG",""
  2029. " WT_TREE: Tree","C:\DISKUTIL\WT_TREE.PRG",""
  2030. " Dust (Hippotamus)","C:\DISKUTIL\DUST.PRG",""
  2031. " Sagrotan 4.15","E:\WT_PD.002\SAGROTAN\SAGROTAN.PRG",""
  2032. " Disk Looker DL II","C:\DISKUTIL\DL_II\DLII.PRG",""
  2033. " ARC-Shell 1.96","C:\ARC\ARCSHEL2.PRG",""
  2034. "Spiele    ",5
  2035. " Patience","A:\PATIENCE.PRG",""
  2036. " Galerie","A:\GALERIE.PRG",""
  2037. " Dame","A:\RNSSANCE.PRG",""
  2038. " Backgammon ","A:\GAMMON.PRG",""
  2039. " VAX-Games","A:\GFABASRO.PRG",""
  2040.  
  2041.  
  2042.  
  2043. ə5.3 Druckertreiber patchen
  2044.  
  2045.      Mit einem Diskettenmonitor kann der in der Datei  WT_GFA.PRG 
  2046. der  interne Druckertreiber verändert werden.  Dazu muß  nur  die 
  2047. Stelle 'Druckerreset' gefunden werden.  Der Steuerzeichen  stehen 
  2048. dort in den folgenden Bytes als ASCII-Klartext:
  2049.  
  2050. Steuerzeichen für Drucker:
  2051.  
  2052. Druckerreset:1B40______
  2053. _______8_lpi:1B30______
  2054. _Draft-Modus:1B7800____
  2055. _________USA:1B5200____
  2056. _Papierlänge:1B43xx____
  2057. _Linker_Rand:1B6Cxx____
  2058. Rechter_Rand:1B51xx____
  2059. ____17.2_cpi:0F________
  2060. Oberer__Rand:1B72xx____
  2061. Unterer_Rand:1B4Exx____
  2062.  
  2063.      Die Werte müssen nur mit den entsprechenden  Steuersequenzen 
  2064. überschrieben  werden (siehe Handbuch des Druckers).  Dabei  sind 
  2065. maximal 5 Byte pro Steuersequenz  möglich.  Steuersequenzen,  die 
  2066. variable Parameter enthalten,  müssen mit den Zeichen 'xx' einge-
  2067. tragen werden.  Der Treiber setzt dann die entsprechenden Parame-
  2068. ter  ein.  Leerzeichen (hier der Übersicht wegen als  Unterstrich 
  2069. '_' markiert) definieren das Ende der Sequenz,  wenn diese kürzer 
  2070. als 5 Steuerzeichen ist:
  2071.  
  2072.  
  2073.  
  2074. ə5.4 Änderungen bei Updates
  2075.  
  2076.  
  2077. ə5.4.1 Änderungen V1.2 -> V1.42 (Auswahl)
  2078.  
  2079. -    Erweiterung um eine flexible Programmschale wie Flesh.
  2080.  
  2081. -    Mehr Outline-Funktionen.
  2082.  
  2083.  
  2084. ə5.4.2 Änderungen V1.42-> V3.0x (Auswahl)
  2085.  
  2086. -    Anpassung  an GFA-BASIC V3.0:  neue Variablentypen Byte  und 
  2087.      Word,    neue   Sprachelemente    (SELECT,    ....),    neue 
  2088.      Syntaxmöglichkeiten (Gosub ohne Klammeraffe).  Es kann  wei-
  2089.      terhin auch GFA-BASIC V2.0-Code verarbeitet werden.
  2090.  
  2091. -    Zeilennummern bis 999999, Tab-Abstand 6 Zeichen
  2092.  
  2093. -    Speicherangaben für Variablentypen
  2094.  
  2095. -    Einbindung  von MENUX in Programmschale.  MENUX wurde  nicht 
  2096.      integriert,  damit  jeder sein eigenes  MENUX  programmieren 
  2097.      kann (deshalb ist der Quellcode beim Compiler V3 dabei).
  2098.  
  2099. -    Bei Programmschale wird der Rückgabewert des Programmes  (im 
  2100.      Fehlerfall die Fehlernummer) angezeigt.
  2101.  
  2102. -    Druckertreiber kann verändert (gepatched) werden.
  2103.  
  2104. -    Neues 'Kalenderprogramm', neuer Wettbewerb.
  2105.  
  2106. -    Listing auf Drucker: DEF FN und FUNCTION-Zeilen fett.
  2107.  
  2108. -    Ausgabe  des Atari-eigenen "ß"-Zeichens CHR$(158) als  grie-
  2109.      chisches  CHR$(225),  damit  keine Peseta-Ausgabe  mehr  auf 
  2110.      'Nicht-Atari-Drucker'.
  2111.  
  2112. -    X-REF: Im Protokoll werden die maximale Anzahl Variablen, die
  2113.  
  2114.      WT_GFA lesen kann, angezeigt.
  2115.  
  2116. -    X-REF:   Der  Speicherbedarf  kann  über  Patches  gesteuert 
  2117.      werden.
  2118.  
  2119. -    Zeilennumerierung  wahlweise ab 0 (GFA V3) oder  1  (Tempus, 
  2120.      1st Word Plus)
  2121.  
  2122. WT_FT.PRG, WT_TREE.PRG und WT_DOUBL.PRG liegen in neuen Versionen 
  2123. vor.  WT_TREE.PRG  wurde in die HD-TOOLS-Serie  mit  aufgenommen. 
  2124. Zweck:  Grafische  Anzeige  der Verzeichnisstruktur  einer  Fest-
  2125. platte.
  2126.  
  2127.  
  2128. ə5.4.3 (Noch) nicht umgesetzte Erweiterungsvorschläge
  2129.  
  2130. -    Anzeige   der   Proceduren-Hierarchie  grafisch   als   Baum 
  2131.      (was tun bei rekursiven Funktionen?)
  2132.  
  2133. -    Tastatursteuerung  (macht wenig Sinn,  da das Programme  nur 
  2134.      wenige Interaktionen verlangt).
  2135.  
  2136. -    Ausgabe der Cross-Reference-Liste gleich nach dem  Erstellen 
  2137.      (kommt vielleicht schon beim nächsten Update).
  2138.  
  2139. -    Anzeige des REM-Killer, um wieviel Prozent die Datei gekürzt 
  2140.      wurde (Spielerei).
  2141.  
  2142. -    Meldungen  wie 'Procedure wird aufgerufen,  ist  aber  nicht 
  2143.      vorhanden'.
  2144.  
  2145. -    ERASE: Warnung nur, wenn tatsächlich kein ERASE.
  2146.  
  2147. -    Auflistung aller lokal definierten,  aber nicht  verwendeten 
  2148.      Variablen (... wäre eigentlich wichtig).
  2149.  
  2150. -    Umschaltung  auf mittlere Bildschirmauflösung bei  Start  in 
  2151.      niedriger (wie geht das?).
  2152.  
  2153. -    X-REF als Einzelprogramm für 520 kB-ST's (uninteressant).
  2154.  
  2155. -    Externer Druckertreiber (zuviele Dateien, dafür jetzt Patch-
  2156.      Möglichkeit.)
  2157.  
  2158. -    Globale Variablentypenvereinbarungen ,  z.B.  DEFINT  (kommt 
  2159.      vielleicht schon beim nächsten Update).
  2160.  
  2161.  
  2162. ə5.4.4 Fehler, die noch nicht behoben sind:
  2163.  
  2164. X-REF:    X-REF erzeugen:  Bei Speicherknappheit (ca 45 kB)  wäh-
  2165.           rend X-REF erzeugen kann das Programm abstürzen (Fehler 
  2166.           wurde erst einmal beobachtet).
  2167.  
  2168. X-REF:    X-REF  ausgeben:  Real-Zahlen mit Exponent  werden  als 
  2169.           zwei Variablen gedeutet (2.9E-9 -> 2.9E und 09.)
  2170.  
  2171. X-REF:    In  GFA-BASIC gelten lokale Variablen nicht nur in  der 
  2172.           Procedure  als  lokal,  in der  sie  definiert  werden, 
  2173.           sondern auch in allen von dieser Procedure aufgerufenen 
  2174.           Proceduren.  Es  mag  zwar kein  guter  Programmierstil 
  2175.           sein,  solche  Variablen nicht  als  Übergabe-Variablen 
  2176.           weiterzugeben, ist aber in GFA-BASIC erlaubt. In WT_GFA 
  2177.           wird  aber  eine  lokale  Variable  nur  innerhalb  der 
  2178.           Procedure  als lokal angesehen,  in der  sie  definiert 
  2179.           wird.
  2180.  
  2181. Diverse:  Listing drucken: Bei Initialisierung CHR$(208) falsch.
  2182.  
  2183. Diverse:  Listing drucken: kein Zeilenumbruch.
  2184.  
  2185. Sonst.:   Fehler bei Ausgabe auf schreibgeschützer Diskette.
  2186.  
  2187.      Weitere Fehler bitte über Anwenderreport REPORT.TXT schrift-
  2188. lich melden.  Diese werden bis 01.03.1990 gesammelt,  um dann die 
  2189. Arbeiten für V3.03 vorzunehmen.
  2190.  
  2191.  
  2192.  
  2193. ə5.5 SCHMANKERL: PROGRAMMIERWETTBEWERB
  2194.  
  2195.      Im  Laufe der Jahre entstand die folgende  Kalender-Routine, 
  2196. die aus nur einer (1!) Zeile besteht - hier allerdings  leserlich 
  2197. formatiert.   Das  Programm enthält nur einen Befehl (PRINT)  und 
  2198. sonst noch einige (24) Funktionen. Die Aufgabe bestand darin, das 
  2199. Ergebnis   im  Klartext auszugeben und mit der  begrenzten  Länge 
  2200. einer  Programmzeile im Interpreter auszukommen.  Die  Ergebnisse 
  2201. stimmen ab dem Jahr 1752.
  2202.  
  2203.  
  2204. INPUT "Tag,Monat,Jahr):",t%,m%,j%
  2205. PRINT
  2206.   MID$ (
  2207.         "Samstag   Sonntag   Montag    Dienstag  Mittwoch  Do
  2208.          nnerstagFreitag",
  2209.         1+10*( (   ( 13  * (1 + m% - 12 * (m% < 3))   \   5 )
  2210.                  + (  5  *          (j% + (m% < 3))   \   4 )
  2211.                  - (                (j% + (m% < 3))   \ 100 )
  2212.                  + (                (j% + (m% < 3))   \ 400 )
  2213.                  + t%
  2214.                ) MOD 7
  2215.              ),
  2216.         10
  2217.        )
  2218.  
  2219.      In der Public-Domain-Version 1.2 war ein kleiner  Wettbewerb 
  2220. ausgeschrieben.  Wer  als  erster diese  Zeile  weiter  verkürzt, 
  2221. sollte  die  Vollversion kostenlos  erhalten.  Der  Gewinner  ist 
  2222. Alfred Sieglhofer.  Zitat:  "Die Lösungsidee beruht  darauf,  daß 
  2223. wegen  der 'MODULO 7'-Bildung ohne Schaden anzurichten  erst  mal 
  2224. 7*((j%+(m%<3)\100)  addiert  werden darf.  Dann lassen  sich  die 
  2225. beiden 'Jahrhundertterme' zusammenfassen."
  2226.  
  2227.      Triviale Vereinfachungen, die lediglich eine Reduzierung der 
  2228. Anzahl von Klammern bewirken,  konnten nicht berücksichtigt  wer-
  2229. den,  da bei manchen Interpreterversionen die Klammern  notwendig 
  2230. sind.  Bei  der  Integerdivision "\" gibt  es  Unterschiede  z.B. 
  2231. zwischen GFA V1 und GFA V2, sowie zu anderen BASIC-Dialekten.
  2232.  
  2233.      Die Lösung von Alfred Sieglhofer ist nun die neue  Ausgangs-
  2234. situation für den Kalender-Wettbewerb:
  2235.  
  2236. INPUT " Datum (Tag,Monat,Jahr):",t%,m%,j%
  2237. PRINT " Wochentag: ";
  2238.   MID$ (
  2239.         "Samstag   Sonntag   Montag    Dienstag  Mittwoch  D
  2240.          onnerstagFreitag",
  2241.         1 + 10 * ( (   t% 
  2242.                      + 13 *  ( m% + 1 - 12 * (m% < 3))   \ 5
  2243.                      +  5 *  (  j% + (m% < 3) )          \ 4
  2244.                      + 25 *  ( (j% + (m% < 3) ) \ 100 )  \ 4
  2245.                    ) MOD 7 
  2246.                  ),
  2247.         10
  2248.        )
  2249.  
  2250.      Wer  als  erster  eine noch  kürzere  Routine  in  GFA-BASIC 
  2251.  
  2252. einsendet,  erhält als Anerkennung umgehend eine aktuelle  Profi-
  2253. version der Weller-TOOLS für GFA-BASIC.
  2254.  
  2255.  
  2256.  
  2257. ə5.6 UNIX-WERKZEUGE FÜR DIE PROGRAMMENTWICKLUNG
  2258.  
  2259.      Wer unter UNIX in C programmiert,  hat ein paar  Hilfsmittel 
  2260. mehr,  als in den Weller-TOOLS für GFA-BASIC implementiert  sind. 
  2261. Wer  Lust hat,  kann die im folgenden genannten  Hilfsmittel  für 
  2262. GFA-BASIC nachprogrammieren:
  2263.  
  2264.  
  2265. ə5.6.1 Programm-Checker 'lint'
  2266.  
  2267. Sucht nach:
  2268. -    unerreichbaren Befehlen
  2269. -    unbenutzten Variablen
  2270. -    Variablen, die vor ihrer Initialisierung benutzt werden
  2271. -    unbenutzten Funktionen
  2272. -    Funktionen, deren Returnwert nicht benutzt wird
  2273. -    logischen Ausdrücken mit konstantem Ergebnis (z.B.:
  2274.      (a OR NOT a) ist immer TRUE
  2275. -    Sprünge hinein in Schleifenrümpfe
  2276. -    Typ-Inkompatibilitäten  (in  GFA-BASIC  oft  erlaubt,   z.B. 
  2277.      a%=b!)
  2278. -    nicht portable Konstrukte (?)
  2279.  
  2280.  
  2281. ə5.6.2 C-Präprozessor 'pp'
  2282.  
  2283. Macht folgendes:
  2284.  
  2285. -    tauscht symbolische Konstanten gegen Werte aus (s.o.)
  2286. -    wertet Konstanten-Ausdrücke aus, z.B. sei zmax konstant 100 
  2287.      für das ganze Programm. Dann gilt b=zmax-1 -> b=99.
  2288. -    entfernt Kommentare (macht der GFA-Compiler)
  2289. -    substituiert symbolische Konstanten
  2290. -    expandiert Makros (?)
  2291. -    zieht include-Dateien in die Quelle
  2292. -    steuert die bedingte Compilierung
  2293.  
  2294.  
  2295.  
  2296. ə5.7 GLOBALES PROGRAMM-LAYOUT
  2297.  
  2298.      Wenn  man Programme auch nach Jahren noch  verstehen  können 
  2299. möchte,  um  z.B.  Änderungen  durchzuführen,  oder  wenn  andere 
  2300. Programmierer sich in den Programmcode einarbeiten müssen, ist es 
  2301. unumgänglich,  Mindestregeln an Programmierkonversionen einzuhal-
  2302. ten. Eine wichtige Informationsquelle (auch für Mitarbeiter) ist, 
  2303. neben AUSFÜHRLICHER Kommentierung, der Programmkopf:
  2304.  
  2305. ******************************************************************
  2306. '
  2307. '       Projekt: Weller-TOOLS für GFA-BASIC
  2308. '
  2309. '  Beschreibung: Entwicklungssystem für GFA-BASIC-Programme mit:
  2310. '                - Flexible, programmierbare Programmschale
  2311. '                - Cross-Reference-Analyser,findet vollautomatisch
  2312. '                  Fehler und macht Verbesserungsvorschläge
  2313. '                - Outliner zur Analyse der Programmstruktur
  2314. '                - Viele kleine Utilities (Lister, Rem-Killer, .)
  2315. '
  2316. '         Autor: Dipl.-Ing. Clemens Weller
  2317. '   Mitarbeiter: Dipl.-Ing. (FH) Henrik Alt, Gaildorf: Assembler
  2318. '                Dr. Wolfgang Brenner, Schwäbisch Hall: Beta-
  2319. '                  Tester, Beratung
  2320. '
  2321. ' Projektbeginn: 07.10.88
  2322. '        Status: Freigegeben 01.01.90 V3.02, 23.12.89 V3.02 100 kB
  2323. '
  2324. '    Änderungen:
  2325. '    -----------
  2326. ' Version Datum        Kommentar
  2327. ' V1.07   07.10.88     ! Zusammenlegung der Utilities in ein Prog
  2328. ' V1.08   23.10.       ! Debugging
  2329. ' V1.09   05.11.,10.11.,21.11.  ! Harmonisierung, Integration des 
  2330. '                                 Handbuches
  2331. ' V1.1    21.11.,22.11.,23.11.  ! 1. Freigegebene Version
  2332. ' V1.2    10.12.       ! Anpassung Speicher 4MB, Freigabe PD 20kB
  2333. ' V1.21   17.01.89     ! Checksumme eingeführt
  2334. ' V1.31   30.01.       ! DIM und ERASE geändert wegen Fehler beim
  2335. '                        2. Laden
  2336. '                      ! OL u.a. Funktionen verbessert
  2337. ' V1.32   01.02.       ! MC-Routinen in Real-Feld -> schneller 
  2338. '                        als in String
  2339. ' V1.34   03.02.       ! rm_kill schneller und von Fehler befreit
  2340. ' V1.35   04.02.       ! Geschwindigkeitsoptimierung von xref
  2341. '                        (nicht fertig)
  2342. ' V1.41   06.02.       ! Flexible Programmschale integriert
  2343. ' V1.42   09.02.       ! Extra-Hilfen integriert,Freigabe Verkauf
  2344. ' V2.00   06.07.89     ! Beginn umfangreicher Verbesserungen (s. 
  2345. '                        extra Liste)
  2346. '         11.07.       ! 6-stellige Zeilennummern, Sprites weg
  2347. ' V2.01   29.07.       ! Menux in Shell integriert
  2348. ' V2.02   04.08.       ! GRAF-Funktionen V2->V3
  2349. ' V2.03   23.08.       ! Mehr SELECT, Word, Byte, SUCC. Trace für
  2350. '                        Entwicklung.
  2351. ' V2.04   24.08.       ! xref macht weniger (keine?) Fehler mehr 
  2352. '                        bei GFA V3.
  2353. '                      ! Lokale->Globale Var. wg. Geschwindigkeit
  2354. ' V2.05   28.08.       ! EXEC machte Probleme: CLOSEW 4 - 0
  2355. '                        entfernt, dann ok.
  2356. ' V2.06   29.08        ! Fileselect für TOS 1.4 erweitert, / -> \
  2357. '
  2358. ' usw.
  2359. ' ****************************************************************
  2360.  
  2361.  
  2362. ə5.8 ÜBERSICHT ÜBER ZUSATZPROGRAMME FÜR GFA-BASIC
  2363.  
  2364.      Diese Liste enthält einige Tools für GFA-BASIC.  Sie  erhebt 
  2365. keinen Anspruch auf Richtigkeit und  Vollständigkeit.  Ergänungs-
  2366. vorschläge und Korrekturen sind willkommen.
  2367.  
  2368.  
  2369. ə5.8.1 Analysierer
  2370.  
  2371.  
  2372. BASICREF, STAR-REF
  2373.      Autor:    Rainer Koch, Kölner Str. 156, 5210 Troisdorf
  2374.      Bezug:    ST-Computer Nr. 111
  2375.      Zweck:    Cross-Reference-Analyse;  erstellt  Variablenliste 
  2376.                und druckt Listing mit Zeilennummer  aus.  Ausgabe 
  2377.                auf Datei oder Drucker (Star NL-10);  inkl. Quell-
  2378.                code.
  2379.      Version:  2.1 vom 23.10.87
  2380.  
  2381. CROSSREF
  2382.      Autor:    H.  Bauch, Details: Lothar Veitenhansl, Hölgerstr. 
  2383.                12, 6100 Darmstadt, Tel. 06151/23720
  2384.      Bezug:    Idee: Listing in ST-Computer 5/87 S. 36
  2385.  
  2386. TRACEBAS
  2387.      Bezug:    GFA-CLUB, Diskette Nr. 22
  2388.      Autor:    Lothar Veitenhansl, Hölgerstr. 12, 6100 Darmstadt, 
  2389.                Tel. 06151/23720
  2390.      Zweck:    "Das  Programm  wurde notwendig,  da ich  ein  180 
  2391.                Kilobyte  GFA-BASIC-Programm entwickelt  habe,  in 
  2392.      dem  Fehler  von der Variablen-Organisation zwar  durch  das 
  2393.      CROSSREF.PRG leicht zu entdecken waren,  Fehler im logischen 
  2394.      Programm  Ablauf aber bei ca.  400 Procedures kaum  noch  zu 
  2395.      ermitteln  waren.  Die normale  TRACE Funktion  (TRON)  gibt 
  2396.      viel  zu viele Informationen aus,  logische  Struktur-Fehler 
  2397.      sind damit auch nicht zu ermitteln. Es war also naheliegend, 
  2398.      eine Möglichkeit zu finden,   die Verschachtelung der Proce- 
  2399.      dures  ausgeben zu lassen.  Zusätzlich zu den  nötigen  Kon-
  2400.      trollaufrufen GOSUB uprg(1=Anfang od. 0=Ende, Unterprogramm-
  2401.      name)  fügt  das  Programm zwecks  besserer  Lesbarkeit  des 
  2402.  
  2403.      Listings  den Unterprogrammnamen als REM (!) an  das  RETURN 
  2404.      an.  Dies wird nicht mehr gelöscht! Das TRACEBAS.PRG erzeugt 
  2405.      folglich eine Drucker- od.  Bildschirmliste,  die das momen-
  2406.      tane Unterprg mit den aufrufenden Prozeduren beim  Verlassen 
  2407.      des  Unterprogrammes  ausgibt,  (Drucker  :  tracelst!=TRUE, 
  2408.  
  2409.      Screen :  tracecon!= TRUE),  sowie die Ebene des Uprgs.  und 
  2410.      die  Anzahl  der Aufrufe.  Aus dieser Liste läßt  sich  fast 
  2411.      direkt  ein Nassi-Shneiderman-Diagramm erzeugen,  indem  man 
  2412.      die  Blöcke  farbig markiert.  Vorsicht  beim  Anwenden  des 
  2413.      TRACEBAS.PRG auf Programme in denen die Variablen tracelst!, 
  2414.      tracecon!  oder das Unterprogramm PROCEDURE uprg() verwendet 
  2415.      worden sind !!!"
  2416.  
  2417. STRUKTO
  2418.      Autor:    Peter Ubachs, Schlenkestr. 54, 4020 Castrop-Rauxel
  2419.      Bezug:    für DM 5,-- Vorkasse direkt vom Autor
  2420.  
  2421.  
  2422. ə5.8.2 Masken- und Menü-Generatoren
  2423.  
  2424. KLIK-EDI  CLICK BOX CONSTRUCTION SET
  2425.      Autor:    Dietrich  Glasenapp,  Linzenicher Weg  38,  D-5170 
  2426.                Jülich 12, Tel. 02461/8704
  2427.      Bezug:    direkt vom Autor, 'Einführungspreis' DM 19,90
  2428.      Zweck:    "Programmsystem  zur  grafischen  Gestaltung   der 
  2429.                Bildschirm-Bedieneroberfläche von Steuer-Menüs für 
  2430.                technisch-schlichte Anwendungen." Editor ist  Teil 
  2431.                des Anwenderprogrammes,  dadurch schnelles Entwer-
  2432.                fen und Austesten möglich.
  2433.      Anm.:     Für GFA-BASIC V3; Programm liegt als LST-Datei (32 
  2434.                kB) vor; gut verständliche Anleitung als TXT-Datei 
  2435.                (51 kB);  selbstgestricktes Verfahren zur  Verwal-
  2436.                tung von Boxen unter Maussteuerung;  keine GEMVDI-
  2437.                Funktionen.
  2438.  
  2439. BCS - BASIC CONSTRUCTION SET
  2440.      Autor:    Black Ninija (keine Adresse bekannt)
  2441.      Zweck:    Menüs und Dialogboxen im Programm  editieren,  als 
  2442.                LST-Datei  abspeichern  und  in   Anwenderprogramm 
  2443.                ein'mergen'.  Selbstgestricktes Verfahren zur Ver-
  2444.                waltung  von  Boxen  unter  Maussteuerung;   keine 
  2445.                GEMVDI-Funktionen.
  2446.      Anm.:     Unterstützt  die Programmierung von eigenen  Desk-
  2447.                tops mit GFA-BASIC.  Durch ein eingebautes Malpro-
  2448.                gramm können die Menüs (Buttons und  Verzierungen) 
  2449.                auf  dem Bildschirm gezeichnet und Icons  plaziert 
  2450.                werden.  BCS  erzeugt dann ein ablauffähiges  GFA-
  2451.                BASIC-Programm, das diesen Desktop aufbaut und die 
  2452.                eingebauten Buttons abfragt. (M)
  2453.  
  2454. TEXTER
  2455. MEDITOR
  2456. MSK-GEN
  2457.  
  2458. MSK-Edit  Masken-Editor für GFA-BASIC
  2459.      Bezug:    ST-Computer Nr. 111
  2460.      Zweck:    "Jeder,  der  in BASIC ein Programm  erstellt  und 
  2461.                Eingabemasken  braucht,  hat Arger mit Print  At() 
  2462.                usw.  Dieses  Programm erstellt Eingabemasken  und 
  2463.                übergibt  diese als File.MSK  zur  Weiterverarbei-
  2464.                tung.  Übergeben werden: Maskengröße, Hintergrund-
  2465.                farbe,  Titel,  Inputtexte,  Inputsprünge,  Input-
  2466.                länge.  Inkl.  Quellcode;  Generiert mit einfacher 
  2467.                Bedienung  eine komplette Eingabemaske als  Quell-
  2468.                text (Form Input). Incl. Source in GFA-BASIC. (M), 
  2469.                69 029 Bytes           
  2470.  
  2471. MENÜEDIT
  2472.      Quelle:   ST-Computer Nr. 149
  2473.      Zweck:    Eine Art RCS für GFA-BASIC-Menüleisten.  Gestalten 
  2474.                Sie  Ihre  Menüleiste  per  Dialog.  Das  Programm 
  2475.                erzeugt  sodann einen kompletten Programmkopf  für 
  2476.                GFA-BASIC,  der in das eigene Programm eingebunden 
  2477.                wird  und die gesamte Menüführung Ihres  Programms 
  2478.                erledigt. (M)
  2479.      Anm.:     Wirklich lohnenswert während der Entwurfsphase!
  2480.  
  2481.  
  2482. ə5.8.3 Shells
  2483.  
  2484. FLESH Flexible Shell
  2485.      Autor:    Peter Sippel
  2486.      Bezug:    St-Computer Nr. 144 , Source beim Autor erhältlich
  2487.      Zweck:    Programmschale, von der aus bis etwa 100 verschie-
  2488.                dene  Programme  aufgerufen  werden  können.  Sehr 
  2489.                einfache Bedienung. Das Programm verbraucht leider 
  2490.                etwas viel Speicherplatz (etwa 100 kB). Inzwischen 
  2491.                gibt es auch eine kommerzielle Version (DM 79,--).
  2492.  
  2493. GFA-SHELL
  2494.      Bezug:    ST-Computer Nr. 129
  2495.      Zweck:    Programmschale;   Kommandointerpreter  (CLI)   und 
  2496.                Sprite-Editor integriert.
  2497.  
  2498. SUPERSHELL
  2499.      Bezug:    ST-Computer 118
  2500.      Zweck:    Universelle Programmschale. Aufruf beliebiger Pro-
  2501.                gramme aus der Menüleiste. Quellcode in  GFA-BASIC 
  2502.                auf  Diskette.  Dadurch kann sie  auf  persönliche 
  2503.                Wünsche abgestimmt werden. (F/M); 
  2504.  
  2505. G_CSHELL
  2506.      Bezug:    ST-Computer Nr. 175
  2507.      Zweck:    Programmschale für GFA-BASIC.  Mit diesem Programm 
  2508.                können Interpreter und Compiler bequem  aufgerufen 
  2509.                werden. (M)
  2510.  
  2511.  
  2512. ə5.8.4 Konverter
  2513.  
  2514. OSKAR     Omikron schnell Konverter für Atari ST-Rechner
  2515.      Autor:    Markus  Zietlow,   Wilhelm-Kraft-Str.   14,   4322 
  2516.                Sprockhövel 2
  2517.      Bezug:    Listing in Happy Computer Sonderheft 23; Leserdis-
  2518.                kette 25925 für DM 39,90 (viel zu teuer).
  2519.      Zweck:    Wandelt  Übersetzt  GFA-BASIC-Quellcodes   (*.LST) 
  2520.                Omikron-BASIC.  Danach  ist aber  noch  Handarbeit 
  2521.                nötig.
  2522.  
  2523. ST-Kill
  2524.      Bezug:    Auf original GFA-BASIC-Diskette V2.02
  2525.      Zweck:    Wandelt ST-BASIC,  Omikron-BASIC, GW-BASIC u.a. in 
  2526.                GFA-BASIc um. 9399 Byte.
  2527.  
  2528. KONVERTER: ST-BASIC in GfA-BASIC, 41 719 Bytes
  2529.  
  2530. CONVERT
  2531.      Autor:    Klaus Mulder,  Obere Hauptstr.  4, 8051 Massenhau-
  2532.                sen, Tel. 08165/8437
  2533.  
  2534. BASIC converter
  2535.  
  2536.  
  2537. ə5.8.5 Diverses
  2538.  
  2539. SPRITE EDITOR
  2540.      Zweck:    Sprite Editor, nur (s/w), 12 866 Bytes
  2541.  
  2542. ICONEDIT
  2543.      Bezug:    ST-Computer Nr. 67
  2544.      Zweck:    Erstellen  Sie Sprite-,  Maus- und Füllmuster  und 
  2545.                verwenden  Sie sie  in  GfA-BASIC),  (s/w),  31875 
  2546.                Bytes.
  2547.  
  2548. SECO
  2549.      Autor:    Eckart Stinshoff, Adresse unbekannt
  2550.      Bezug:    ST-Computer Nr. 111
  2551.      Zweck:    Verwaltet Bildausschnitte (mit GFA-BASIC  Befehlen 
  2552.                PUT  und GET bearbeitbar) und fügt sie zu  Biblio-
  2553.                theken zusammen. Incl. Source in GFA-BASIC. (F/M), 
  2554.                63 874 Bytes.
  2555.  
  2556.  
  2557.  
  2558. ə5.9 DIES UND DAS
  2559.  
  2560.  
  2561. ə5.9.1 Dank an:
  2562.  
  2563. Meine Frau Ingrid für die aktive Mitarbeit und die große Geduld.
  2564.  
  2565.      Henrik Alt für die Assemble-Routinen,  Wolfgang Brenner  für 
  2566. die Durchführung von Tests und Korrekturlesen der Handbücher, Uwe 
  2567. Röger für das Brennen der TOS 1.4-Eproms.
  2568.  
  2569.      Besonderen  Dank geht an folgende Anwender,  die  mit  ihren 
  2570. ausführlichen  Anwender-Reports wesentlich zur  Weiterentwicklung 
  2571. beigetragen haben:
  2572.  
  2573.      Daniel Egner,  Thomas Fehr,  Dr.  Flesch, Thorsten Flöck, P. 
  2574.      Früh,  Thomas Gärtner,  Thorsten Hansen,  Roland  Heinemann, 
  2575.      Eric Hofmann,  Axel Jühne,  Karsten Köper, Thomas Kränz, Dr. 
  2576.      Norber Mayer,  Thomas Muckert,  Andreas Pirner,  Marc  Saul, 
  2577.      Hayo Schmidt,  Stephan Schoroth, Friedemann Voigts, Heinrich 
  2578.      Wolf.
  2579.  
  2580.      Auch den anderen ca.  100 Anwendern, die den Anwender-Report 
  2581. ausgefüllt haben,  sei an dieser Stelle für die aktive  Mitarbeit 
  2582. gedankt.
  2583.  
  2584.      Aus rein praktischen Gründen war es unmöglich,  alle  Briefe 
  2585. schriftlich zu beantworten.  In Problemfällen hat oft ein  kurzes 
  2586. Telefongespräch zur Klärung beigetragen.  Da sich die Adresse von 
  2587. 'Weller-TOOLS'  ab  Februar 1990 ändert,  bitte  nicht  die  alte 
  2588. Telefonnummer anwählen.  Post an die alte Adresse wird über einen 
  2589. längeren Zeitraum weitergeleitet.
  2590.  
  2591.  
  2592. ə5.9.2 Ideen aus anderen Programmen:
  2593.  
  2594.      H. Bauchs Listing eines Cross-Reference-Analysers in der ST-
  2595. Computer vom Mai 1987,  Peter Sippels flexible Schale 'Flesh' von 
  2596. der  ST-Computer Public-Domain-Diskette Nr.  114 und Lothar  Vei-
  2597. thenhansls Tracebas von der GFA-Club-Diskette Nr.  22.  Ideen zum 
  2598. Programmierstil  und zur Arbeitsweise von den  Programmierern  im 
  2599. Buch 'Faszination Programmieren'.
  2600.  
  2601.  
  2602. ə5.9.3 Programmhinweise:
  2603.  
  2604.      Die  Programme wurden mit dem GFA-BASIC  Interpreter  V3.07D 
  2605.  
  2606. entwickelt und dem Compiler V3.03 compiliert.  Das Handbuch wurde 
  2607. mit 1st Word Plus V3.15 geschrieben,  das Inhaltsverzeichnis  mit 
  2608. 1st XTRA  V1.02 erstellt.  Die Bilder wurden mit  Public  Painter 
  2609. Monochrom V0.47 erstellt oder bearbeitet.  Tempus V2.05 hat  gute 
  2610. Dienste geleistet. Schließlich noch für die Fanpost: Adimens V2.3 
  2611. und Aditalk V2.3 verwalten die Adressen.
  2612.  
  2613.  
  2614. ə5.9.4 Copyright, Public Domain:
  2615.  
  2616.      Die Software,  das Handbuch, der Name 'Weller-TOOLS für GFA-
  2617. BASIC' sowie das 'Weller-TOOLS'-Signet unterliegen dem  Copyright 
  2618. von Clemens Weller,  Steinheim a.d. Murr.  Disketten der  Public-
  2619. Domain-Version dürfen frei kopiert werden,  ohne daß diese  Copy-
  2620. rights verletzt werden,  solange die Zusammenstellung der Disket-
  2621. ten nicht verändert wird.
  2622.  
  2623.  
  2624. ə5.10 Anwender-Report "Weller-TOOLS für GFA-BASIC" V3.02
  2625.  
  2626. Dieses Formular kann helfen,   die Weller-TOOLS für GFA-BASIC  zu 
  2627. verbessern.  Dieses Formular, ggf. mehrmals,  ausdrucken, ausfül-
  2628. len und einsenden an:
  2629.  
  2630.      Da  sich  die  Adresse von 'Weller-TOOLS'  ab  Februar  1990 
  2631. ändert,  bitte nicht die alte Telefonnummer anwählen. Post an die 
  2632. alte Adresse wird über einen längeren Zeitraum weitergeleitet.
  2633.  
  2634.             Weller-TOOLS
  2635.             Dipl.-Ing. Clemens Weller
  2636.             Adalbert-Stifter-Straße 27
  2637.  
  2638.             7141 Steinheim a.d. Murr
  2639.  
  2640.  
  2641. Name        .....................................................
  2642.  
  2643. Straße, Nr. .....................................................
  2644.  
  2645. Plz, Ort    .....................................................
  2646.  
  2647. Telefon     .......................
  2648.  
  2649. Version     3.02 PD......    erhalten am (circa) ................
  2650.  
  2651. Quelle:     O selbst kopiert
  2652.             O Pd-Versand: .......................................
  2653.  
  2654. Hardware
  2655.  
  2656. Computer Atari .........   Festplatte .. MB   Monitor  O sw O Col
  2657.  
  2658. Drucker: ........................................................
  2659. Probleme beim Listing drucken:
  2660. O Nein   O Ja: ..................................................
  2661.  
  2662. GFA-Programme (Circa-Angaben)
  2663.  
  2664.                  Größe der LST-Dateien max ca  ...... kB
  2665.                     Anzahl Proceduren max. ca. ......
  2666. Anzahl lokale Variablen pro Procedure max. ca. ......
  2667.  Welcher Variablentyp kommt am häufigsten vor: ...........
  2668.                                    wie oft ca. ......
  2669.  
  2670. Urteil:
  2671.  
  2672. Besonders nützlich ist:
  2673. O X-REF   O Outliner  O Shell  O Lister  O Sonstiges: ...........
  2674.  
  2675. Besonders verbesserungsbedürftig ist:
  2676. O X-REF   O Outliner  O Shell  O Lister  O Sonstiges: ...........
  2677. O Geschwindigkeit     O Bildschirmdarstellung   O Bedienung
  2678.  
  2679. Meine Programmierkenntnisse (Markierung, freiwillig):
  2680.  
  2681.       Anfänger <--0--1--2--3--4--5--6--7--8--9--10--> Experte
  2682.  
  2683.  
  2684. Vorschläge, Kritik, Anregungen, Fehler, Wünsche:
  2685.  
  2686.  
  2687. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
  2688.  
  2689.  
  2690. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
  2691.  
  2692.  
  2693. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
  2694.  
  2695.  
  2696. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
  2697.  
  2698.  
  2699. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
  2700.  
  2701.  
  2702. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
  2703.  
  2704.  
  2705. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
  2706.  
  2707.  
  2708. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
  2709.  
  2710.  
  2711. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
  2712.  
  2713.  
  2714. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
  2715.  
  2716.  
  2717. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
  2718.  
  2719.  
  2720. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
  2721.  
  2722.  
  2723. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
  2724.  
  2725.  
  2726. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
  2727.  
  2728.  
  2729. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
  2730.  
  2731.  
  2732. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
  2733.  
  2734.  
  2735. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
  2736.  
  2737.  
  2738. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
  2739.  
  2740.  
  2741. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
  2742.  
  2743.